-
Notifications
You must be signed in to change notification settings - Fork 0
Operational validation: governed free-model canary for private repositories #833
Copy link
Copy link
Open
Labels
area: apiAPI, protocol, event, or external contractAPI, protocol, event, or external contractarea: authAuthentication, authorization, identity, or tenant isolationAuthentication, authorization, identity, or tenant isolationarea: ci-cdCI, GitHub Actions, checks, release, or supply chainCI, GitHub Actions, checks, release, or supply chainarea: securitySecurity boundary, hardening, or vulnerability preventionSecurity boundary, hardening, or vulnerability preventionmaintenancepriority: mediumNormal-priority or P2 workNormal-priority or P2 workstatus: blockedBlocked by conflict, dependency, or required prerequisiteBlocked by conflict, dependency, or required prerequisitetype: featureNew or expanded product capabilityNew or expanded product capability
Description
Activity
Metadata
Metadata
Assignees
Labels
area: apiAPI, protocol, event, or external contractAPI, protocol, event, or external contractarea: authAuthentication, authorization, identity, or tenant isolationAuthentication, authorization, identity, or tenant isolationarea: ci-cdCI, GitHub Actions, checks, release, or supply chainCI, GitHub Actions, checks, release, or supply chainarea: securitySecurity boundary, hardening, or vulnerability preventionSecurity boundary, hardening, or vulnerability preventionmaintenancepriority: mediumNormal-priority or P2 workNormal-priority or P2 workstatus: blockedBlocked by conflict, dependency, or required prerequisiteBlocked by conflict, dependency, or required prerequisitetype: featureNew or expanded product capabilityNew or expanded product capability
RCA
The central OpenCode review workflow historically used GitHub repository visibility as the proxy for whether anonymous/free external models could receive review context. That is overly coarse: a private repository can contain only intentionally public-equivalent source, while a public repository can still contain sensitive material accidentally. Conversely, the absence of configured GitHub Actions secrets does not prove that tracked source, fixtures, history, comments, generated review evidence, customer names, architecture, or business context are non-confidential.
PR #830 replaces the blanket private-repository exclusion with a trusted-base, fail-closed opt-in and provider-scoped credential isolation. Code-level success is necessary but not sufficient; the feature is not operationally closed until a real private-repository run proves the intended model and credential boundary.
Feasibility decision
A realistic implementation must satisfy all of the following:
public_equivalentand accepts external free-model data use.If no repository satisfies these conditions, do not invent eligibility. Keep the feature available but inactive and record the specific failed feasibility condition.
Execution plan
After #830 reaches protected
mainthrough normal required checks and independent approval:.github/opencode-private-free-models.jsondeclaration in a normal reviewed PR. Merge it separately to the protected default branch.opencode-free/*candidate, exact head/base, and provider-guard behavior without retaining prompts, source bodies, credentials, or hidden reasoning.Acceptance evidence
This issue may close only when one unchanged protected-base canary run and one negative-control run prove all of the following:
Queued, cancelled, skipped, rate-limited, predecessor-head, status-only, synthetic-merge-only, or local-only evidence is not operational acceptance.
Depends on #830.