oficina / docs Public

Implement reviewed Docs TeamMode identity and permissions open

On branch feat-team-mode

Implementing approved design 75818ad in isolated branch from fetched main 5fe0447, composing approved principal10a8364 without altering its source branch. Shared roster TryLock amendment74dda57 is under independent review/CI and will be pinned only after publication. TeamMode remains unmounted until typed identities, current grant-only scopes, late operation guards and stream behavior are complete. Root coordinates Home producer/operator/platform dependencies; no deployment from this branch without combined gates.

Checkpoints 7b52265 and 308f095 are pushed. TeamMode remains unmounted: optional-address identity, verified configuration, immutable mode marker, opaque SQLite roster evidence, and a unified permission-scope seam. Existing internal/docs suite and focused race passed; meaningful nil-to-empty and OwnerID-bypass mutations were killed. Frozen old/new/old/new principal probes preserved IDs, ownership, grants and content (data compatibility only). Initial CI found a CLI seed Actor literal outside the package; 308f095 fixes it. Full gate and focused race are now running on 308f095. Actual router, transaction, response-boundary and stream integration remains in progress; no activation or deployment.

Docs checkpoint 07df446 passed exact CI. Store scopes now enforce grant-only access after membership loss; real writer-queue revocation and final post-insert lease expiry leave content and timestamps unchanged. Create/grant/publish/snapshot transactions have final lease checks. Buffered responses carry exact lengths, recheck 64 KiB chunks, and abort after-header refusal; a clean-truncation mutation is killed. Actual browser abort proof remains required. Ordinary TeamMode completion refuses current-account conflicts before allocation and uses the principal store membership callback for unknown identities. Stream seams retain the original lease and close on expiry/fencing. Canonical context-aware session reading is separately Fable-approved at framework d9c28d7; its gate/publication is pending, so Docs has not pinned or mounted it. No TeamMode activation or deployment.

TeamMode checkpoint 2a5de8b3d27490a277304292f89fa57474f86097 is pushed with exact CI success; full local gate and focused Team/stream race pass. Framework context reader d9c28d7 is explicitly Fable-approved and canonically published. Actual router verifies local link ownership, membership removal with independent grant, unknown 503/partial catalog, Home-only nil-address first entry, conflicts/no allocation and mandatory mode refusal. Real TCP stream writer-deadline and publication-reconnect tests pass; archived uncancellable-reader mutation fails the intended deadline assertion. Native Chromium/WebKit snapshot/raw/since interrupted-body cases all pass with unchanged cursor and same-cursor retry: /tmp/oficina-team-browser/results.json. Running the approved two-editor 120-second contention canary and completing browser save-status proof next. Whole-branch Fable review still required; no TeamMode deployment or activation.

Frozen acbb192c0c5b27adc3de71c73c87d86013e4d21b is under explicit whole-branch Claude Fable review against 5fe0447. Canary found a real transient-to-permanent reclassification defect; request-sticky uncertainty fixes it, with actual shared-cache mutex regression and killed mutation. Independent exact grant remains valid; new request regains fresh member standing. Corrected canary committed 240+240 distinct real Yjs updates over 119.508s (120-second schedule), worst retry503 rate 2/242=0.83%, zero permanent refusals/transport aborts/refresh failures, no delayed drain. Original failing evidence retained. Chromium+WebKit actual save queue proof now also passes 404 failed/drop, 503 retrying/retained, automatic retry204 clear. Source, metrics and scripts in /tmp/oficina-team-browser; review in /tmp/oficina-team-mode-code-review. Current final gate/CI pending. No deployment or activation.

Current frozen acbb192 exact remote CI, full local gate, final targeted race and native browser body/save/reconnect receipts are all green. Whole-feature Fable pass1 stopped at max_turns12/exit8 before verdict; recorded as no-verdict in /tmp/oficina-team-mode-code-review/termination.json. Parent-directed bounded continuation uses max-turns40 with key source/diffs/receipts inline, same clean SHA, /tmp/oficina-team-mode-code-review2. No code changes or deployments while review is active.

Docs Fable SAME continuation handle terminated exit5/runerror at turn11 with weekly quota exhausted; NO APPROVE or REQUESTCHANGES verdict exists. Root reports reset 2026-09-10T19:05:59.971Z. No restart, reviewer switch, upgrade or paid credits authorized. Frozen acbb192 remains clean, tested, pushed and UNAPPROVED; tasks70/71 remain Started pending mandatory review. Actual terminal metadata /tmp/oficina-team-mode-code-review2/termination.json and raw review retained. Do not merge/deploy/activate this candidate on test results alone. Completed framework/roster approvals remain valid. Agent state preserved in /tmp/oficina-team-agent-state.json.

Whole-branch independent Fable review completed for acbb192c0c5b27adc3de71c73c87d86013e4d21b vs5fe0447ff896d9cc9083b326642bfac549ce524d: actual claude-fable-5-1, exit0/end_turn/non-error, explicit APPROVE for squash-merge of branch implementation, NOT activation. Complete verdict /home/paulca/.cache/oficina-fable-resumed/docs/verdict.txt; exact archived diff/source and provider result alongside it.

No blocking merge findings. Activation checklist gains subject-format census in docsidentitylinks (roster accepts pr_ format while assertion syntax is broader); existing pin74dda570e0cf approval/CI must be evidenced. Other nonblocking notes: test-only permissive readable/writable helpers, lease invalidation on cache publication, response-guard query cost. Real Home provisioning, compatible-release floor and two-team live revocation/restore drills remain unsatisfied. Root is checking current branch gates and merge prerequisites separately; no activation or deployment claimed.

Merged reviewed acbb192c0c5b27adc3de71c73c87d86013e4d21b through normal Amadan branch merge with exact expected SHA. Main is c703a4188460ee78b579a6148df6bb2141bf9cb3, and actual main CI now SUCCESS. Receipt /home/paulca/.cache/oficina-fable-resumed/docs/main-ci.json. Shared checkout fetched origin/main but remains owner's domain/oficina-works branch; no switch/overwrite. Team activation remains disabled; no deployment of c703a41 yet.

User authorized deploying reviewed merged Docsc703a41 to overnight-docs.bds.oncarlos.com with TeamMode disabled. Exact main CI passed. Supported instances list confirms isolated canary/overnight-release host; default and named config plus secret-name lists contain no DOCSTEAM* entries. Building immutable archived source with embedded full revision. Will preserve existing Home handoff/settings and verify live body/header, Chromium/WebKit unsigned navigation, plus local authenticated editing against exact source. No real human mail or synthetic live sessions. Home checker component implementation proceeds separately; team activation remains disabled.

DEPLOYED AND VERIFIED reviewed merged c703a4188460ee78b579a6148df6bb2141bf9cb3 at https://overnight-docs.bds.oncarlos.com, canary/overnight-release, TeamMode disabled. Initial old-body/new-header mismatch resolved with exact-host/environment restart through locally built current platform CLI (installed CLI lacked --host and refused without mutation). Full app body and platform header now agree. Eight live Chromium/WebKit,320/1280px,JS on/off unsigned Home handoff/local sign-in cases pass; no mail or authenticated live session generated. Local exact-source authenticated editing gate running. Evidence /home/paulca/.cache/oficina-docs-preview-c703. User notified with URL and editing/reload checks. Production untouched by this stage.

Fable APPROVE for bounded deployed disabled-Team c703 preview. Actual claude-fable-5-1 exit0/end_turn/nonerror; /home/paulca/.cache/oficina-docs-preview-c703/review/verdict.txt. Local actual-signin/edit/reload/two-tab/Markdown/PDF/mobile/blocked-write negative passed Chromium and WebKit. Live8 unsigned cases passed, live authenticated editing still not claimed. Operational correction: scoped restart log says instance was asleep and left alone; next wake served c703. Prior old-body/new-header was root-observed in tool output, not timestamped HTTP receipt. Config receipt now includes plain keys AND sealed secret names (no values). No Team keys in either default or named bundle. Exact same source but different native development vs ARM64 live artifact/environment; production promotion and Team activation remain outside this approval.

User reported no preview sign-in email for paul@rslw.com. Found named overnight-release DOCSALLOWEDADDRESSES omitted that address while default production bundle included it. gateBegin intentionally returns the check-mail redirect without calling mail for refused addresses. Added only that address to named preview allowlist preserving existing entries; requested exact preview host/environment restart and verified config readback/local sign-in page/current c703 binary. No app-code change or production-config change. Normal /signin redirects to Home; explicit /signin/local exercises the corrected local admission path. SMTP declarations are active/verified, no send error observed, but no human test email or end-to-end delivery claimed. Receipt /home/paulca/.cache/oficina-preview-mail/result.json. User should request a new link on explicit local sign-in.