Align the MAS IAM rule and read num_uses from the raw writer response.

Adds the one-session Scaleway IAM grant script, merges the publisher
bucket probes into one statement to fit the 10-statement limit, keeps
the Playwright cache under the account home during attended login, and
records the publisher-gate runs through the num_uses rejection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 49552@bnt-lap001
Assistant-Session: 575802ee-c0c0-42a9-b2a1-9204c9f5b3f4
This commit is contained in:
codex 2026-11-02 19:28:28 +01:00
parent 5b0a2a06c4
commit ca7c46b775
9 changed files with 1203 additions and 118 deletions

View file

@ -7,6 +7,7 @@ headed Chromium binary pinned by coulomb-social's Playwright install.
"""
import json
import os
import pwd
import subprocess
import sys
import tempfile
@ -62,8 +63,22 @@ def chromium_executable(browsers_json, cache_root):
return ""
def playwright_cache(process_home, account_home):
"""The Chromium pin lives in the account cache.
Attended platform-admin login replaces the process home with an empty
session before OpenBao starts. Looking under that session misses the
binary, the window never opens, and the OIDC callback times out.
"""
del process_home
return Path(account_home) / ".cache" / "ms-playwright"
def browser_path():
return chromium_executable(BROWSERS_JSON, Path.home() / ".cache/ms-playwright")
account_home = pwd.getpwuid(os.getuid()).pw_dir
return chromium_executable(
BROWSERS_JSON, playwright_cache(Path.home(), account_home)
)
def launch_argv(browser, profile_dir, url):