Skip to content

Design: external users and groups with default Web Human authority #1392

Closed
1 of 1 issue completed
Closed

Description

@DoodleBears

Goal

Design Bot-scoped external users and user groups after the reviewed single-role Lark pairing slices (#1371, #1372, #1373–#1376), without requiring local-only users to configure permissions. This is a separate follow-up, not part of PR #1377's approved UI revision.

Human-confirmed decisions

  • The authenticated Human who directly uses the local Web interface and talks to the Bot has the product's Super Admin authority by default. Direct Web input must not require IM pairing, a role assignment, permission setup or pairing prompts. Local-only users keep the existing unrestricted product experience.
  • Inbox input originating directly from the authenticated Web Human retains that trusted provenance and full Human authority. An external IM message, copied text, a shared source or a model-supplied claim of being Web/Super Admin must not acquire that authority merely because it is displayed in a Web Channel or admitted to the Inbox.
  • External IM people retain the existing trusted platform/Bot/current-App-Binding scope. Their ordinary-chat eligibility and supported management capabilities stay explicit; the current shipped candidate assigns one Role per chat pairing.
  • PR Add ordinary Lark roles and reviewed automatic chat pairing #1377 first improves that existing model's layout: people / roles / requests tables, selected-person details, separate role dialogs and contextual information icons. It does not introduce user groups or per-person direct permissions.

Human-confirmed contract — 2026-10-11

The Human approved the AWS-informed recommendation and instructed implementation after the four original Lark slices merged. This first tracer manages continuous authorization groups, supported structured capabilities and explicit individual exceptions. It does not union natural-language Roles or build AWS IAM's full policy engine.

  • Keep one primary behavior Role per ordinary chat pairing. Its natural-language policy remains model behavior, not an arbitrary resource ACL.
  • Within one Bot/platform/current App Binding, a person may belong to multiple authorization groups. Membership refers to the exact approved ordinary conversation pairing, not display name, platform conversation membership or an enduring cross-Binding user directory.
  • Effective structured capability: applicable legacy management grant + primary Role Allow + active Group Allow + direct-person Allow, minus any explicit Group/person Deny. No applicable Allow means denied. Show sources and revisions; removing one group contribution does not cancel an independent Allow.
  • The first supported editable capability set is approve / reject, using the existing native private-approval path. Existing stored answer/save-rules grants remain compatible; this slice does not deliver those controls or permit a Group to grant machine-owner authority.
  • Group membership does not create pairing/chat eligibility. Revocation, disabled/replaced Binding, unavailable Role and re-pairing fail closed; fresh pairing does not restore old memberships or individual exceptions. Scope and current state are rechecked at the actual management decision, including delayed cards and restart.
  • Direct authenticated Web Human input retains default full Human/Super Admin product authority without IM pairing, configuration or prompts. Native execution approval is preserved; externally sourced text displayed in Web cannot acquire Human provenance.

Current delivery

Parent: #1372. Project: IM Identities & Messaging (#10). Live claims, dependencies and Human gates remain authoritative.

Activity

  1. DoodleBears commented on Oct 11, 2026

    @DoodleBears
    ContributorAuthor

    Design research — AWS IAM practice, not an accepted permission contract

    The Human asked how the proposed first Group slice compares with industry/AWS IAM practice. No Group behavior was approved by that question, and no implementation claim is made here.

    Primary sources checked on 2026-10-11:

    • IAM user groups: policies remain attached to groups; users can belong to multiple groups and receive permissions through current membership. Copying a Role into each user is only a batch operation, not that continuing authorization relationship.
    • Policy evaluation: applicable allows can combine; explicit denial overrides allowance, while boundaries/organization controls constrain access. This is not a rule to union all IAM roles.
    • IAM roles: a role is an assumable identity with temporary credentials, unlike BotHarness's existing Role combining behavior text and supported management capabilities.
    • IAM best practices: federated workforce access/Identity Center, temporary credentials, least privilege and review of unused grants.

    Revised proposal, requiring reviewed design before implementation:

    1. Groups should be continuing authorization sources; membership removal stops that group's contribution on the next current-authority resolution. Other independent grants may still authorize the operation.
    2. Prefer reusable Group permission assignments, with individual direct grants only for explicit exceptions; expose every effective capability's source and scope.
    3. Define deterministic resolution for supported structured capabilities independently from natural-language behavior policy. Keep one primary behavior Role initially rather than silently combining conflicting prompt text. Multi-group membership, explicit deny, delegation limits and migration still require a concrete contract; AWS's full policy engine is not implied.
    4. Direct authenticated Web Human input keeps the already confirmed default full authority and needs no external pairing or permission setup. External restrictions and groups never confer that provenance or bypass native execution approval.

    The earlier single-Role batch assignment suggestion remains a possible narrow delivery option, not industry best practice or a Human-selected design. #1392 remains needs-triage/Todo.

  2. DoodleBears commented on Oct 11, 2026

    @DoodleBears
    ContributorAuthor

    Human confirmed the AWS-informed continuous Group authorization recommendation and instructed implementation on 2026-10-11. The approved first contract keeps one primary natural-language Role; applicable structured Allow sources combine and any explicit Group/person Deny wins. Direct Web Human authority remains full by default. First delivery edits supported approve/reject only, preserves legacy management grants, binds memberships/exceptions to exact current ordinary pairing and App Binding, and shows current permission sources. The first runnable tracer follows this design issue; earlier not-ready statements are superseded for this bounded contract. No other current claim/blocker found; #1404 remains separate.

  3. DoodleBears commented on Oct 11, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim

    • Task: codex/local/01a12734-8226-7ae3-8d1b-db08bde64d76; Agent: Codex; state: active.
    • Branch: codex/1392-im-group-authority.
    • Scope: accepted contract/domain integration and native first-slice IM tracer: continuous authorization groups and explicit person exceptions #1406 delivery; record current-authority source/deny behavior and preserve Web Human defaults. The initial design acceptance gate is fulfilled by explicit Human approval and this runnable first ticket. First-slice Human runtime feedback remains required before broader variants.
  4. added
    ready-for-agentFully specified, ready for an AFK agent
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    and removed
    needs-triageMaintainer needs to evaluate this issue
    on Oct 11, 2026
  5. DoodleBears commented on Oct 11, 2026

    @DoodleBears
    ContributorAuthor

    Agent work evidence — first tracer under review

    • Agent-Task: codex/local/01a12734-8226-7ae3-8d1b-db08bde64d76; state: active, awaiting the complete Lark/native acceptance path.
    • Draft PR: #1407, head 29ba1541e4537131a8f7923581bbacc2032a613e.
    • Messaging-owned current groups and exact pairing memberships, explicit personal Allow/Deny, generation 79 migration, current permission sources, and native private-decision integration are implemented. One primary behavior Role, private destination fences and direct Web Human authority remain independent.
    • The actual Client created two scoped groups and a personal Approve Deny; current effective permission is Reject only, with both independent Allows still visible. The same authority and sources survived an isolated Host restart.
    • 154 local focused/regression tests, lint, format, typecheck, build, ledger/source policy/ADR checks passed. Direct Web Human delivered WEB1406_OK through the real model and channel_send.
    • Full UI flow plus matched light/dark/narrow before/after evidence is embedded in the PR; all 11 images render on GitHub. Exact-head explanation and download.
    • QA1 used a fresh Human-authorized exclusive receiver window and an isolated Host. The first current-permission query had a platform-confirmed message and real model Tool call. Lark Web then timed out; later query/pairing attempts had only optimistic client IDs and no Host admission, so they do not count as successful messages.
    • Full Linux CI is running. Real Lark Allow once, independent Reject, authority removal/Deny on delayed cards and restart approval, then Human feedback, remain required before completion or widening the tracer. No merge or deployment performed; Project remains In Progress.
  6. DoodleBears commented on Oct 11, 2026

    @DoodleBears
    ContributorAuthor

    CI repair and receiver status

    • Agent-Task: codex/local/01a12734-8226-7ae3-8d1b-db08bde64d76; active claim retained for the unfinished acceptance scope.
    • PR #1407 head is now 550898dd4cc3f11198e1eab904755826906381f1.
    • First CI had 3993 passing tests and one stale Inbox upgrade assertion expecting generation 78. Updated it to generation 79; all 10 Inbox tests pass locally. The new commit changes only that assertion; runtime/UI source and screenshots remain unchanged. Total focused/regression local coverage is now 164 passing tests.
    • New full Linux CI is running.
    • The Human confirms that Lark chats load in their visible tab. Our old tab was closed, and the automation service then explicitly reported no preview host and instructed not to retry. This supersedes the earlier assumption that Lark Web alone blocked all access.
    • The task's isolated QA1 Host and receiver have been stopped; Profile retained. No second or production receiver was touched. Before the next receiver start, coordinate the current exclusive start/stop window.
    • Draft and In Progress remain appropriate: complete real Lark/native decisions and first-tracer Human feedback are still required.
  7. DoodleBears commented on Oct 11, 2026

    @DoodleBears
    ContributorAuthor

    Agent work evidence — CI passed; real acceptance pending

    • Agent-Task: codex/local/01a12734-8226-7ae3-8d1b-db08bde64d76; state: active for remaining acceptance, with the same claim and branch.
    • Draft PR #1407, current head 550898dd4cc3f11198e1eab904755826906381f1.
    • Complete Linux CI passed: 3994 tests passed, 13 skipped; 480 test files passed, 7 skipped; lint, format, typecheck, slides, docs, build, and generated-file checks passed.
    • The first CI's sole old schema assertion was repaired; focused/regression local coverage is 164 passing tests. Runtime and UI source were unchanged by that test repair.
    • PR body contains all 11 GitHub-rendered actual before/after and full-workflow screenshots. Current exact-head explainer records the verified evidence and pending gates.
    • Actual group/person writes, current sources after restart, and direct Web Human reply were verified. Complete real Lark Allow once, independent Reject, delayed-card authority refusal and restart approval, followed by first-tracer Human feedback, remain pending.
    • The Human's Lark tab can display chat. The automation tool explicitly reported no preview host and instructed not to retry; this is the remaining control blocker. This task's isolated QA1 receiver is stopped and its Profile retained. Coordinate the current exclusive start/stop window before restarting it.
    • Keep IM tracer: continuous authorization groups and explicit person exceptions #1406 and Design: external users and groups with default Web Human authority #1392 In Progress and the PR Draft. No completion, merge or deployment claimed; no group/provider sibling expansion before first-tracer feedback.
  8. DoodleBears commented on Oct 11, 2026

    @DoodleBears
    ContributorAuthor

    Agent verification update — #1406 first tracer

    Task: codex/local/01a12734-8226-7ae3-8d1b-db08bde64d76; state: active, awaiting first-tracer Human feedback.

    Product PR #1407 at cefa12fac05856c182bfab4b80f565f7ec074f06 now includes current main, combined bilingual ledgers and ADR-0168 without changing the group permission model. Provider PR #20 supplies the bounded shared-card renderer repair; the exact Provider candidate is adopted and digest-verified.

    All six real QA1 native scenarios are complete: group-derived Allow once; independent Reject; old-card Allow blocked by current group Deny while another group still Allows; fresh Allow after Profile restart; repaired original-card Allow; repaired original-card Reject. Native results and actual private replies agree, and the last two original cards visibly show final status with zero buttons. Committed sanitized QA record.

    QA1 receiver is stopped and its exclusive window released. Original group permissions and personal Deny are restored; temporary management pairings revoked, route off, no native approval pending. The dirty #1031 Provider checkout and other owners' scopes were preserved.

    Current Linux CI passed. Provider 105 local related tests/build/package verification pass; no Provider CI run is reported. Review evidence and exact-head limits. Human feedback is still required before expanding sibling features; no merge/deployment or Done transition.

  9. DoodleBears commented on Oct 11, 2026

    @DoodleBears
    ContributorAuthor

    Human acceptance and review handoff — #1406

    The Human explicitly replied “接受这轮交互” on 2026-10-11, accepting the first authorization-group/person-exception tracer including real Allow once, independent Reject, delayed Deny, restart and final original-card display.

    Task: codex/local/01a12734-8226-7ae3-8d1b-db08bde64d76; state: active, awaiting PR review/integration. The first-tracer Human feedback gate is satisfied.

    Product PR #1407, head cefa12fac05856c182bfab4b80f565f7ec074f06: complete Linux verify passed — 4027 tests passed, 13 skipped, 481 files passed, seven skipped; lint/format/typecheck/build/docs/generated checks pass. Prerelease preparation also passed. No release was published.

    Provider repair PR #20, head 1bf6baa8ad09b337f80f119961d10c4783ea702e: 105 related regressions, build and package verification pass; real new Allow/Reject cards display final state with no buttons. GitHub reports no Provider CI run. The extra full native-Windows check ended with 3722 passed, 40 failed, seven skipped: failures are in unchanged image-input settings and update-service tests. These files and their owning modules are outside the four-file repair diff; that full local suite is not claimed green.

    Thirteen actual settings/Lark screenshots render in the product PR body; its accessible exact-head explanation and sanitized QA record are linked there. QA1 receiver is stopped and its window released, temporary private management pairings revoked, notification route off, original group Allow/person Deny restored, and no native approval remains pending.

    Both PRs are ready for review. Issue/Project remain open/In Progress pending PR review and integration; this records acceptance, not a PR merge or deployment authorization. Existing #1031/#1033/#1034 owners and #1404's undecided pairing-code contract are unchanged.

  10. DoodleBears commented on Oct 11, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome — completed

    Task: codex/local/01a12734-8226-7ae3-8d1b-db08bde64d76; state: completed for the confirmed authorization-group/person-exception tracer and bounded Provider card-display repair.

    The Human accepted the full real Lark tracer and then explicitly authorized merge. Product PR #1407 merged to main at 0c56a8b558d01e6012c50de2029d4c53e6260369; Provider PR #20 merged to the qualified codex/1111-inline-app-setup line at 81b91291600edba36b1947940c2be8e50abc9fdf. Product merge tree equals the exact qualified head, whose verify and prerelease preparation passed (4027 tests passed, 13 skipped).

    The recorded Human acceptance, native six-scenario evidence, 13 GitHub-rendered screenshots and exact-head review artifact remain linked in the PR/Issue. Provider full native-Windows limitations remain disclosed; no complete Provider CI pass is inferred. QA1 is stopped and its window released. No publication, deployment or production receiver takeover occurred.

    The native #1406 child fulfills #1392's confirmed first-tracer contract. The separate pairing-code design #1404 and existing questions/save-rules/destination owners retain their own scope. Project cards move to Done only for these completed issues; Hub #1372 stays open for #1404.

  11. removed
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature:messagingMessaging module and external providersready-for-agentFully specified, ready for an AFK agent

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions