Skip to content

Share GitHub Project transport-error classification #2303

Description

@codeforester

Goal

Create one shared transport-error predicate or marker set with an explicit GraphQL-only extension. Retain transport-specific authentication classification and duplicate-item handling.

Background

Repository-wide duplication review against f9c18f3294873cbbcda9acc7af7f1bc6b17eed45 (2026-09-17).

GraphQL and REST each maintain their own transport-error marker tuple and nearly identical lowercase/any logic (97% token similarity). All REST transport markers appear in the GraphQL copy; GraphQL additionally handles unknown owner type. Live pure-function probes confirmed the common classifications and that deliberate difference. These decisions control fallback and fail-closed behavior.

Verified source locations:

Closed #2230 added local REST recovery. No open issue covers the duplicate transport predicates introduced by the two adapters.

This is a maintainability refactor. Similarity alone is not evidence of a production failure; any demonstrated differences are called out above.

Scope

Create one shared transport-error predicate or marker set with an explicit GraphQL-only extension. Retain transport-specific authentication classification and duplicate-item handling.

Acceptance Criteria

  • Common network/rate-limit/server markers are maintained once.
  • Preserve the GraphQL-only unknown owner type recovery trigger.
  • Authentication and permission failures do not become generic retryable transport failures.
  • Preserve current exception classes, fallback routing and request timeout behavior.

Validation

Run project_graphql/project_rest tests; parameterize every current marker plus benign text, auth failures and GraphQL-only owner errors through both callers.

Run focused checks first, then the repository-required broader checks for the actual implementation. Preserve public command contracts and review .ai-context/ impact in the PR.

Non-Goals

No merger of REST and GraphQL response parsing; no new retries, quota bypasses or network behavior.

Project Fields

  • Status: Ready
  • Priority: P2
  • Area: CLI
  • Initiative: Contract Hardening
  • Size: S
  • Milestone: Unscheduled; no release commitment is implied by this audit.

Agent Assignment

Implementation-ready scoped follow-up, assigned to codeforester. Follow AGENTS.md and docs/github-workflow.md: start through basectl gh issue start, use the canonical issue worktree, characterize current behavior before extraction, and open an issue-linked PR. Keep each refactor independently reviewable.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or product improvement

Type

No type

Projects

  • Status
    Done

Relationships

None yet

Development

No branches or pull requests

Issue actions