Skip to content

spec(cli-surface, AST-031): the person filing a gap report chooses where it goes - #7749

Merged
josephfarina merged 1 commit into
mainfrom
josephfarina/gap-report-destination-spec
Oct 20, 2026
Merged

josephfarina merged 1 commit into
mainfrom
josephfarina/gap-report-destination-spec

Conversation

@josephfarina

@josephfarina josephfarina commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Exact decision needed

Who decides where a gap report goes when loaded integrations name their own issuesUrl, and how that choice reaches the CLI. Today a report always goes to the configured handlers (or, with none, the owning package's issuesUrl), so an integration's own tracker is unreachable whenever a handler is loaded.

Existing authority searched

Decision

  • INV36: astryx gap-report keeps the default route. --to <package> sends the report only to that loaded integration's issuesUrl (GitHub only with --confirm-public, otherwise routed_only). A --to naming no destination fails with ERR_UNKNOWN_PACKAGE before anything is sent and lists the choices. When at least one destination exists, --list-categories and the receipt of a run without --to list every destination, in text and JSON, and tell the agent to ask the person. Docs and agent guidance say the same: ask the person, never pick a package yourself, and leave out --to when the person does not choose.
  • DEC-9: the person chooses; the CLI lists and the agent asks.

Rejected alternatives

  • Copying every report to the integration's own issuesUrl automatically: reports land in places nobody picked.
  • Letting the agent pick the destination.

Claim scope and non-goals

  • Covers astryx gap-report and gapReport() only. Handler composition is unchanged.

Evidence and implementation relationship

The code PR #7724 implements INV36 with tests that fail on current main.

Writing rubric results

  • R1 narration: one found, "as before" at the end of DEC-9; removed. None left.
  • R2 research in the record: none.
  • R3 evidence naming a change: none; the INV36 and FR13 verification rows name tests and states.
  • R4 rejected alternatives over one line or outside a decision: two, one line inside DEC-9.
  • R5 pull request or issue references remaining: none added.
  • R6 ruled open questions still listing options: none.

Scope

  • This PR contains specification records only.
  • It records observable behavior and preserves equivalent internal implementations.
  • Any named internal mechanism is intentionally public, names its dependent caller/system, and explains why an equivalent implementation would not satisfy the contract.
  • Verification states the evidence layer and failure signal without prescribing CI job/workflow topology.
  • It records one intentional durable decision, not a rescue for a separable tagalong.
  • The canonical knowledge owner, affected current claims, and overlapping open work are named; any ownership collision is resolved or called out for human decision.
  • Adjacent API, visual, accessibility, composition, and implementation facts remain outside scope unless this exact decision depends on them.
  • Public text and artifacts contain no internal Meta context.

Validation

  • pnpm check:knowledge (inside pnpm check:repo): passes.
  • Prettier: AST-031 passes; cli-surface.md is not Prettier-clean on main, so it was edited by hand to avoid re-padding the whole table.
  • git diff --check: clean.

@vercel

vercel Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
astryx Ready Ready Preview Oct 20, 2026 6:17pm UTC

Request Review

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Meta Open Source bot. label Oct 20, 2026
@astracat-bot

astracat-bot Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

AI review status for this pull request.

Review status Updated
🔄 In progress (for maintainers only) Oct 20, 2026, 6:11 PM UTC

@github-actions github-actions Bot added the needs:spec-owner-review Current knowledge records await owner approval label Oct 20, 2026
@josephfarina
josephfarina force-pushed the josephfarina/gap-report-destination-spec branch from 12487b1 to ad360a6 Compare October 20, 2026 18:11
@josephfarina

Copy link
Copy Markdown
Contributor Author

/approve-spec ad360a6

@github-actions github-actions Bot removed the needs:spec-owner-review Current knowledge records await owner approval label Oct 20, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR Analysis Report

Previews ready: Storybook and Sandbox were built with this PR's docsite. CI evidence will be added when available.

View Storybook for this PR · View Sandbox for this PR

@josephfarina
josephfarina merged commit 3fb02c3 into main Oct 20, 2026
53 checks passed
@github-actions
github-actions Bot deleted the josephfarina/gap-report-destination-spec branch October 21, 2026 06:22

This branch was successfully deployed

1 active deployment
Preview — ad360a6d Deployed Oct 20, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Meta Open Source bot.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant