diff --git a/.agents/skills/missing_docs/references/changelog_decisions.md b/.agents/skills/missing_docs/references/changelog_decisions.md index 31cc5013..ca7e5132 100644 --- a/.agents/skills/missing_docs/references/changelog_decisions.md +++ b/.agents/skills/missing_docs/references/changelog_decisions.md @@ -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. | diff --git a/.agents/skills/missing_docs/references/feature_surface_map.md b/.agents/skills/missing_docs/references/feature_surface_map.md index 030dd44e..4a4611c1 100644 --- a/.agents/skills/missing_docs/references/feature_surface_map.md +++ b/.agents/skills/missing_docs/references/feature_surface_map.md @@ -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 @@ -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. @@ -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 @@ -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 diff --git a/.agents/skills/missing_docs/references/surface_snapshot.json b/.agents/skills/missing_docs/references/surface_snapshot.json index afd4ddc5..c0e4f2be 100644 --- a/.agents/skills/missing_docs/references/surface_snapshot.json +++ b/.agents/skills/missing_docs/references/surface_snapshot.json @@ -207,7 +207,7 @@ "PRCommentsV2": "ga", "PartialNextCommandSuggestions": "other", "PendingUserQueryIndicator": "ga", - "PeriodicHandoffCheckpoints": "dogfood", + "PeriodicHandoffCheckpoints": "preview", "PinnedTabs": "ga", "PluggableNotifications": "ga", "PredictAMQueries": "other", @@ -229,7 +229,7 @@ "RemoteCodebaseIndexing": "ga", "RemoveAutosuggestionDuringTabCompletions": "dogfood", "ResizeFix": "dogfood", - "RestorePromptOnInlineModelSelectorSearch": "dogfood", + "RestorePromptOnInlineModelSelectorSearch": "ga", "RetryTruncatedCodeResponses": "dogfood", "RevertDiffHunk": "ga", "RevertToCheckpoints": "ga", @@ -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", @@ -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",