Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .agents/skills/missing_docs/references/changelog_decisions.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,16 @@ Newest first. One row per PR number — usually a `warpdotdev/warp` changelog it

| PR | Decided | Verdict | Gate / disqualifier | Reason and outcome |
|---|---|---|---|---|
| n/a (release gate no-op, 2026-09-09) | 2026-09-09 | n/a | Not a verdict | `check_new_release.py` exited 10: current stable is still `v0.2026.09.02.08.27.stable_01`, already recorded in `last_release_processed.json`. No new changelog entries and no new `oz_updates` bullets, which is why `changelog_review` is empty this run. `last_release_processed.json` deliberately left unchanged. The rest of the run is the exhaustive standing-coverage and snapshot-diff sweep requested on top of the gate. |
| RestorePromptOnInlineModelSelectorSearch (flag dogfood→ga) | 2026-09-09 | no | Disqualified: pure UI affordance / small and intuitive | Opening the inline model selector from the model chip now parks text already in the input so the input can filter the model list, restoring it when the selector closes (`open_model_selector_and_snapshot_prompt`, `app/src/terminal/input.rs:5666`; cargo bridge `restore_prompt_on_inline_model_selector_search` in `app/src/features.rs:448`). No setting, CLI flag, or API field, so Gate 1 does not fire; nothing fails and the prompt returns on its own, so Gates 2 and 3 do not; the model chip and `/model` already surface the selector, so Gate 4's second condition fails. Model selection itself is documented at `agents/inference/model-choice/`. Mapped ignore. |
| PeriodicHandoffCheckpoints (flag dogfood→preview) | 2026-09-09 | deferred | Gate 0 | Uploads workspace handoff snapshots periodically during a cloud agent run instead of only at end-of-run (`PREVIEW_FLAGS` in `crates/warp_features/src/lib.rs:970`). Requires `OzHandoff`, and is a no-op for local runs and when `--no-snapshot` is set. Preview, not GA, so not documentable. Added to the surface-map ignore list beside the other preview toggles; the snapshot diff re-flags it on promotion or removal. Re-check when the flag reaches `RELEASE_FLAGS` or the default feature set, at which point it belongs on `platform/handoff/`. |
| POST /factory-inbox/notifications/dismiss, POST /factory-inbox/notifications/restore | 2026-09-09 | deferred | Gate 0 | Bulk dismiss and restore for personal factory inbox notifications (`factoryInboxMutationHandler` wired to `logic.DismissFactoryInboxNotifications` / `logic.RestoreFactoryInboxNotifications`, `router/handlers/public_api/factory_inbox.go:26-27`), both behind `RequireFactoryAccess` and `requireFactoryTasksEnabled`. Same unreleased `/factory-inbox` namespace already deferred on 2026-09-01; `developers/agent-api-openapi.yaml` still has zero `/factory` or `/factory-inbox` paths. Mapped both `-> internal`. Re-check when the factory API is published. |
| POST /factory-inbox/notifications/{uid}/dismiss (removed) | 2026-09-09 | no | Map hygiene | Per-notification dismiss route replaced by the bulk collection route above; no `{uid}/dismiss` registration remains in `factory_inbox.go`. It was never in the released OpenAPI spec or any doc page, so nothing to correct. Dead map entry replaced in place by the two new routes. |
| POST /factory/{uid}/integrations/jira/handoff | 2026-09-09 | deferred | Gate 0 | Hands a Jira work item to the factory from the integrations test-connections flow (`CreateFactoryJiraTaskHandoffHandler`, `router/handlers/public_api/factories.go:84`), the Jira counterpart of the Linear handoff route deferred on 2026-09-02. Inside the unreleased `/factory` namespace that sync-openapi-spec excludes wholesale. Not a docs gap either: the user-facing flow — assign or mention **Warp** on a work item, an `agent_session_created` automation routes it to an agent — is already documented at `factories/integrations/jira.mdx`. Mapped `-> internal`. Re-check when the factory API is published. |
| n/a (24 potentially_stale_docs, 2026-09-09 run) | 2026-09-09 | no | Disqualified: not a docs gap / owned by style_lint | Same 24 files as the 2026-09-07 run, re-verified line by line rather than carried forward. 12 files are the `ai credits` bucket-name false positive (unresolved style-policy question in the Notes below), 10 `warp terminal` hits are the distinguishing usage the style guide permits (client vs. backend in `enterprise/`, local terminal vs. cloud harness across `platform/harnesses/`), `warp ai` is the historical FAQ heading "What happened to the old Warp AI chat panel?", `generate command` matches the live "Generate commands as command-line input" heading, and `ai command` matches AI Command Search — still live, per `app/src/settings/input.rs:173` ("Whether typing '#' at the start of terminal input opens AI Command Search"). The one genuine nit, `terminal/more-features/index.mdx:4`, is a pure wording issue SKILL.md assigns to `style_lint`. No missing content. |
| n/a (81 --weak-coverage feature findings, 2026-09-09 re-run) | 2026-09-09 | no | Disqualified: not a docs gap / heuristic false positive | Re-ran `--weak-coverage` for exhaustiveness: 81 findings, matching 2026-09-04 and 2026-09-07. Same mapped-page keyword misses verified on 2026-08-26 onward. No new gap. |
| n/a (surface-scoped slash re-verification, both surfaces, 2026-09-09) | 2026-09-09 | no | Already covered | Re-ran the scoped check that works around the repo-wide slash blind spot, across all 65 `name:` entries in `static_commands/commands.rs` (47 GUI-visible, 32 TUI-capable, none carrying a `feature_flag`). Only absence is `/docker-sandbox` from the GUI page, deliberately `-> internal` behind dogfood `LocalDockerSandbox`. The CLI side is now fully covered — `/team` landed in docs#684. No new gap. |
| n/a (zero findings in five categories, 2026-09-09) | 2026-09-09 | n/a | Not a verdict | Recording the clean categories so a later run can tell "checked and empty" from "not checked": `undocumented_cli_commands`, `undocumented_slash_commands`, `undocumented_settings`, `stale_doc_references`, and `unlisted_pages` all returned zero, and the completeness accounting reported an empty `unaccounted` bucket across all 296 flags, 91 CLI commands, 209 API routes, 65 slash commands, and 231 settings. Both audit modes exited 0 with no `audits_skipped`. |
| GET /agent/conversations/{conversation_id}/transcript | 2026-09-07 | yes | Gate 0 pass, routed to sync-openapi-spec | Released public endpoint absent from the published reference. Tagged `agent`, `bearerAuth`, and **not** `x-internal` in `warp-server/public_api/openapi.yaml`, so `sync_openapi.py --mode diff` classifies it as public with no `!` warning; its sibling `GET /agent/runs/{runId}/transcript` is already published. Backs the raw third-party-harness transcript output shipped in `v0.2026.09.02.08.27.stable_01` (#15642), whose CLI half was verdicted `no` as a bug fix — the API half is a genuine publish gap, not the same item. Not hand-documented (warp-server is private): regenerated the subset via sync-openapi-spec (docs#694), which adds this one operation and removes none. No surface-map entry added — see the extractor blind-spot row below. |
| n/a (audit blind spot: generated handler registration, 2026-09-07) | 2026-09-07 | no | Audit accuracy, not a docs gap | The API extractor parses literal gin registrations, so it cannot see routes registered through `public_api_types.RegisterHandlersWithOptions` (`agent_conversations.go:214`). Three routes are invisible to it: `/agent/conversations/{conversation_id}/transcript`, `/fork`, and `/rename` — none appear in `surface_snapshot.json`'s 207 `api_routes`. This is the API-side analogue of the documented repo-wide slash blind spot, and it is why the transcript gap above needed a spec-level diff to surface. Deliberately did **not** add map entries for these routes: map hygiene validates entries against extracted routes, so an entry for a route the extractor cannot see would register as a dead entry every run. Recorded here instead; fixing the extractor is a skill-script change, out of scope for a content run. |
| n/a (automation/sync-agent-api-spec would leak unreleased surface, 2026-09-07) | 2026-09-07 | no | Gate 0 protection, not a docs gap | The release automation's unmerged branch (pushed 2026-09-04, no open PR) stages 47 operations against this run's safe 31. The extra 16 are 15 `/factory*` routes plus `GET /harness-support/transcript`, with 41 Factory schemas — all deliberately excluded by `EXCLUDED_PATH_PREFIXES`/`EXCLUDED_TAGS`, and all already carrying Gate 0 deferrals in this ledger. Cause: warp-server's publisher filters only on `x-internal: true` and those Factory operations are unmarked (several are tagged `agent` upstream). Flagged in docs#694 with a request that the server team mark them `x-internal` so both publishers agree. No docs change here. |
Expand Down
28 changes: 24 additions & 4 deletions .agents/skills/missing_docs/references/feature_surface_map.md
Original file line number Diff line number Diff line change
Expand Up @@ -416,8 +416,12 @@ GET /factory/access -> internal
# Personal factory task inbox (router/handlers/public_api/factory_inbox.go).
# Sibling of the unreleased `/factory` REST surface; released OpenAPI has no
# `/factory-inbox` paths either. Stays internal until the Factory API ships.
# The dismiss route moved off the per-notification `{uid}` path onto a bulk
# collection route, and gained a matching restore route; both take the
# notification UIDs in the request body.
GET /factory-inbox -> internal
POST /factory-inbox/notifications/{uid}/dismiss -> internal
POST /factory-inbox/notifications/dismiss -> internal
POST /factory-inbox/notifications/restore -> internal
GET /factory-alias/{alias} -> internal
POST /factory -> internal
POST /factory/avatar -> internal
Expand Down Expand Up @@ -551,10 +555,14 @@ GET /factory/{uid}/integrations/slack/users -> internal
# factory integrations UI. Same unreleased `/factory` namespace as siblings above.
GET /factory/{uid}/integrations/issue-tracker/issues -> internal
POST /factory/{uid}/integrations/slack/connection-test-greeting -> internal
# Hands a Linear issue to the factory from the integrations test-connections
# flow (CreateFactoryLinearTaskHandoffHandler). Same unreleased `/factory`
# namespace exclusion as the integration routes above.
# Hands a Linear or Jira issue to the factory from the integrations
# test-connections flow (CreateFactoryLinearTaskHandoffHandler,
# CreateFactoryJiraTaskHandoffHandler). Same unreleased `/factory` namespace
# exclusion as the integration routes above. The user-facing Jira flow is
# already documented at factories/integrations/jira.mdx; only the REST route is
# internal.
POST /factory/{uid}/integrations/linear/handoff -> internal
POST /factory/{uid}/integrations/jira/handoff -> internal
# Factory benchmark suites and benchmark runs
# (router/handlers/public_api/benchmarks.go). Same unreleased Factory product as
# the routes above, and absent from warp-server's canonical public spec.
Expand Down Expand Up @@ -813,6 +821,12 @@ WarpifyFooter
TransferControlTool
TrimTrailingBlankLines
InlineMenuHeaders
# Opening the inline model selector from the model chip parks any text already in
# the input so the input can filter the model list, then restores it when the
# selector closes. Promoted dogfood -> GA. No setting, CLI flag, or API field,
# and the prompt comes back on its own, so there is nothing for a reader to
# configure or recover from.
RestorePromptOnInlineModelSelectorSearch
BlocklistMarkdownImages
BlocklistMarkdownTableRendering
PendingUserQueryIndicator
Expand Down Expand Up @@ -890,6 +904,12 @@ HistorySearchRankingV2
# (fzf or atuin) instead of Warp's command search. Not GA, so not documentable;
# re-check when the flag goes GA.
ShellWidgetHandoff
# Preview flag that uploads workspace handoff snapshots periodically during a
# cloud agent run instead of only at the end. Requires OzHandoff, and is a no-op
# for local runs and when `--no-snapshot` is set. Promoted dogfood -> preview, so
# not GA and not documentable; re-check when the flag goes GA, at which point it
# belongs on platform/handoff/.
PeriodicHandoffCheckpoints
SshDragAndDrop
ITermImages
AIGeneratedOnboardingSuggestions
Expand Down
8 changes: 5 additions & 3 deletions .agents/skills/missing_docs/references/surface_snapshot.json
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@
"PRCommentsV2": "ga",
"PartialNextCommandSuggestions": "other",
"PendingUserQueryIndicator": "ga",
"PeriodicHandoffCheckpoints": "dogfood",
"PeriodicHandoffCheckpoints": "preview",
"PinnedTabs": "ga",
"PluggableNotifications": "ga",
"PredictAMQueries": "other",
Expand All @@ -229,7 +229,7 @@
"RemoteCodebaseIndexing": "ga",
"RemoveAutosuggestionDuringTabCompletions": "dogfood",
"ResizeFix": "dogfood",
"RestorePromptOnInlineModelSelectorSearch": "dogfood",
"RestorePromptOnInlineModelSelectorSearch": "ga",
"RetryTruncatedCodeResponses": "dogfood",
"RevertDiffHunk": "ga",
"RevertToCheckpoints": "ga",
Expand Down Expand Up @@ -969,7 +969,8 @@
"POST /api/v1/agent/tasks/{id}/cancel",
"POST /api/v1/factory",
"POST /api/v1/factory-files/validate",
"POST /api/v1/factory-inbox/notifications/{uid}/dismiss",
"POST /api/v1/factory-inbox/notifications/dismiss",
"POST /api/v1/factory-inbox/notifications/restore",
"POST /api/v1/factory/automations",
"POST /api/v1/factory/automations/{id}/run",
"POST /api/v1/factory/avatar",
Expand All @@ -985,6 +986,7 @@
"POST /api/v1/factory/{uid}/benchmarks/suites/{suite_uid}/tasks",
"POST /api/v1/factory/{uid}/github-onboarding-pr",
"POST /api/v1/factory/{uid}/gitlab-automation-capability/refresh",
"POST /api/v1/factory/{uid}/integrations/jira/handoff",
"POST /api/v1/factory/{uid}/integrations/linear/handoff",
"POST /api/v1/factory/{uid}/integrations/slack/connection-test-greeting",
"POST /api/v1/factory/{uid}/learning",
Expand Down
Loading