AI Assistant & Collaboration Governance
In-App Voice 3-Min Cap & Owner Share Preview Audit
Audit bounded WebRTC voice sessions (<=180s expiry, 15s heartbeat, barge-in turn guards) and verify why share_document requires verified-owner UI confirmation and cannot run inside execute_steps.
Understand bounded WebRTC voice guardrails and owner-confirmed sharing!
When speaking to the Arte Sheets in-app Pro Assistant over WebRTC (RTCPeerConnection with echo cancellation, noise suppression, auto-gain control, and the oai-events data channel), the server owns session lifetime and metered Pro AI credit accounting (from the 2,000 monthly credit grant): active sessions maintain a 15-second heartbeat, stop deterministically at maxDurationSeconds <= 180 seconds (3 minutes, status voiceEnded), increment turn counters on speech_started so stale pre-barge-in tool outputs are discarded, and route every tool call through UI review before acknowledging status (applied, suggested, preview_only, partial, or rejected)!
Crucially, sharing governance enforces three strict layers in the editor: (1) executeCommand never sends an invitation directly from model output — share_document always stops at confirmation_required and renders an explicit UI confirmation button calling sendInvitation only when a verified-email owner clicks Confirm for a valid viewer, suggester, or contributor role; (2) execute_steps (up to 10 steps) explicitly rejects any step whose action is share_document so multi-step edits can never bundle a silent permission grant; and (3) for external MCP workflows via the Arte Sheets ChatGPT plugin 0.1.0 (currently In review / Not published — never assume public availability, approval, or ChatGPT credit transfer), share_workbook requires sheets:share OAuth scope, active Pro, and owner role, creating an in-app invitation with emailSent: false at 0 Arte AI credits under the 120 calls/min per-account limiter!
| Governance Check Layer | Rule Enforced in Arte Sheets | Verified Audit Outcome |
|---|---|---|
| WebRTC Voice Session Lifetime | Active Pro + 15s Heartbeat + <= 180s Cap | 150s -> Live WebRTC Active; >180s -> Stopped at 180s (voiceEnded) |
| Single share_document Tool Call | Verified-Email Owner + viewer/suggester/contributor | Preview Only: Explicit UI Confirm Button Required |
| share_document Inside execute_steps | Explicitly Forbidden in Multi-Step Chains | Rejected: share_document Forbidden in execute_steps |
| MCP Connector share_workbook (0.1.0 In Review) | sheets:share + Pro + Owner (120/min cap) | In-App Invite (emailSent: false), 0 Arte AI Credits |
Bounded WebRTC Voice Session Gate Formula
Model Session_Seconds (B2 = 150), Has_Active_Pro (B3 = 1), Verified_Owner (B4 = 1), Action_Code (B5: 1 = single share_document, 2 = share_document inside execute_steps, 3 = <=100-cell apply_changes), and Valid_Target_Role (B6 = 1)!
=LET(sc_dr, B2, pr_ok, B3, IF(OR(sc_dr <= 0, NOT(OR(pr_ok = 0, pr_ok = 1)), NOT(OR(B4 = 0, B4 = 1)), NOT(OR(B5 = 1, B5 = 2, B5 = 3)), NOT(OR(B6 = 0, B6 = 1))), "Invalid Governance Input", IF(pr_ok = 0, "Blocked: Active Pro Required", IF(sc_dr > 180, "Stopped at 180s (voiceEnded)", "Live WebRTC Active (15s Heartbeat)"))))Action & Sharing Confirmation Gate Formula
Test B5 = 2 (attempting to embed share_document inside execute_steps) and B4 = 0 (non-owner / unverified email) to verify both blocks!
=IF(ISTEXT(E2), IF(E2 = "Invalid Governance Input", E2, IF(B3 = 0, E2, IF(B5 = 2, "Rejected: share_document Forbidden in execute_steps", IF(B5 = 1, IF(AND(B4 = 1, B6 = 1), "Preview Only: Explicit UI Confirm Button Required", "Rejected: Verified Owner & Valid Role Required"), "Validated UI Plan (Preview / Undo / Suggest)")))), "Invalid Governance Input")Try the example
Use the original values or change them to test your understanding.