Skip to content

docs: channel feature-parity principle + pool-parity/token-host follow-up plan#45

Merged
nnemirovsky merged 1 commit into
mainfrom
docs/channel-parity-and-token-host-grant-scope
May 18, 2026
Merged

docs: channel feature-parity principle + pool-parity/token-host follow-up plan#45
nnemirovsky merged 1 commit into
mainfrom
docs/channel-parity-and-token-host-grant-scope

Conversation

@nnemirovsky
Copy link
Copy Markdown
Owner

Why

Operating the credential-pool feature live exposed that pools are CLI-only — no /api/pools REST endpoints, no Telegram /pool commands — while every other store-backed surface (policy, credentials, bindings, MCP upstreams, default-verdict) is reachable from CLI + REST + Telegram. It also confirmed a real defect: pooled token-host phantom expansion rewrites every request to the shared OAuth token host, so a fresh in-container codex login --device-auth (device_code grant) is corrupted into 400 token_exchange_user_error.

What this PR adds (docs/plan only — no code)

  • docs/plans/20260518-channel-feature-parity.md — follow-up implementation plan:
    1. Lift pool ops into a channel-agnostic internal/poolops package (root cause of the gap: rotate/status logic was written inline in cmd/sluice/pool.go).
    2. /api/pools REST endpoints, spec-first (api/openapi.yamlmake generate).
    3. Telegram /pool create|list|status|rotate|remove.
    4. Scope pool token-host phantom expansion to grant_type=refresh_token so non-refresh grants (device-code/auth-code) pass through untouched.
      Includes context, testing strategy, per-task checklists, and out-of-scope notes.
  • CLAUDE.md / CONTRIBUTING.md — a general channel feature-parity principle: store-backed management features must land on CLI + REST + Telegram in the same PR via channel-agnostic logic; single-channel is allowed only with a documented rationale (e.g. local operator tools, CLI-stdin-only OAuth entry), otherwise reviewers should block the PR for parity.

Scope / notes

  • Docs + plan only; no behavior change, so no release/tag (docs-only per the tag policy).
  • The token-host grant-scoping is the v0.17.0 follow-up flagged in the v0.16.0 release notes' "Known limitation".
  • Plan notes the synergy with the existing web-dashboard plan (it reuses internal/poolops once it exists).

… follow-up plan

Pools shipped CLI-only (no REST endpoints, no Telegram commands) while
every other store-backed surface (policy/cred/binding/mcp) is reachable
from all channels. Adds:

- docs/plans/20260518-channel-feature-parity.md: follow-up plan to
  (1) lift pool ops into a channel-agnostic package, (2) add
  /api/pools REST endpoints (spec-first), (3) add Telegram /pool
  commands, (4) scope pool token-host phantom expansion to
  grant_type=refresh_token so a fresh in-container codex
  device_code login is no longer corrupted into a 400.
- CLAUDE.md / CONTRIBUTING.md: a general channel-feature-parity
  principle — store-backed features land on CLI + REST + Telegram in
  the same PR via channel-agnostic logic; single-channel only with a
  documented rationale, else reviewers block for parity.
@nnemirovsky nnemirovsky merged commit c5b4ba0 into main May 18, 2026
6 checks passed
@nnemirovsky nnemirovsky deleted the docs/channel-parity-and-token-host-grant-scope branch May 18, 2026 03:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant