diff --git a/.agents/skills/missing_docs/references/changelog_decisions.md b/.agents/skills/missing_docs/references/changelog_decisions.md index 3d503d1e8..3680f8213 100644 --- a/.agents/skills/missing_docs/references/changelog_decisions.md +++ b/.agents/skills/missing_docs/references/changelog_decisions.md @@ -32,6 +32,75 @@ Newest first. One row per PR number — usually a `warpdotdev/warp` changelog it | PR | Decided | Verdict | Gate / disqualifier | Reason and outcome | |---|---|---|---|---| +| n/a (2026-10-05 residual re-verification of v0.2026.09.30.08.29.stable_01) | 2026-10-05 | n/a | Not a verdict | Drift-watch re-entry, requested as an exhaustive sweep across every category at every severity. The release gate on `main` still reports `v0.2026.09.30.08.29.stable_01` as new because the marker lives only on this branch; on the branch it exits 10. `oz_updates` was empty for this release. Extended #768 rather than opening a second bookkeeping PR, merging `origin/main` first (docs#811, the weekly release updates that finally landed the 2026.09.23 and 2026.09.30 changelog entries). **The changelog net closed on its own this run**: with docs#811 merged, `changelog_review` returns the 10 bullets the previous three runs had to triage straight from the `client_version` payload. All 10 already carry ledger verdicts from 2026-09-30 and 2026-10-02, so none were re-evaluated; the snapshot regen advances `changelog_last_version` so they stop re-reporting. Both audit modes exit 0 with `audits_skipped: []` and an empty `unaccounted` bucket (296 flags, 91 CLI commands, 230 API routes, 65 slash commands, 232 settings). **Three genuinely new items**, all verdicted below, and none warranting a page. `test_audit_docs.py` fails one assertion before the regen (`committed snapshot is stale; regenerate with --update-snapshot`) — that is the suite detecting the three surface changes, not extractor rot, and it passes after the regen; the other two suites pass. `--weak-coverage` returns 83, up two from 81 on 2026-09-28 purely because `ChatGPTSubscription` and `WindowsVideoRecording` entered the mapped GA pool the check scores. `ChatGPTSubscription` shows as a `map_hygiene` / `undocumented_features` pair on this branch only because its page lands in sibling feature PR docs#815 — the map entry is correct and resolves when that PR merges, which is the documented bookkeeping/feature PR interaction, not a gap. Sibling checkouts: `warp` `master` `8b0e86c51`, `warp-server` `develop` `ab74aae54`, both 2026-10-05. | +| WindowsVideoRecording (deferral cleared) | 2026-10-05 | no | Disqualified: improvement to an existing job, not a new capability | **Supersedes the 2026-09-25 and 2026-09-18 `deferred` rows below.** Gate 0 now clears: the flag moved `DOGFOOD_FLAGS` -> `RELEASE_FLAGS` (`crates/warp_features/src/lib.rs:1088`, declared at `:600`), so the blocking condition named on 2026-09-25 is gone and it was re-evaluated rather than re-deferred. It gates nothing but platform availability for a surface that is already documented: `video_recording_enabled()` is `FeatureFlag::VideoRecording.is_enabled() && (!cfg!(windows) || FeatureFlag::WindowsVideoRecording.is_enabled())`, its single use site (`app/src/ai/blocklist/action_model/recording_controller.rs:21-24`), with every caller routed through that helper rather than reading the flag directly. Gate 1 does not fire — there is no setting, CLI flag, or API field, only a compile-target check the user cannot reach. Gate 2 does not — no new error string and no setup steps. Gate 3 does not — nothing a reader relied on changed, and a grep for platform-availability claims (`macOS and Linux`, `not available on Windows`, and similar) across `agents/` and `platform/` finds **no page asserting recording excluded Windows**, so there is no factual correction to make either. Gate 4 fails its first condition explicitly: the criteria name *"now also works in X"* as an improvement to an existing job rather than a newly possible one. Mapped `WindowsVideoRecording -> agents/capabilities/computer-use/testing-and-recordings.mdx`, beside the `VideoRecording` entry for the same surface; that page needs no edit. | +| [#16259](https://github.com/warpdotdev/warp/pull/16259) — `oz environment update --default-runner` | 2026-10-05 | deferred | Gate 0 | A real Gate 1 knob that nonetheless cannot be documented yet, and the clearest instance this run of Gate 0 being a hard prerequisite rather than a formality. The flag is concrete and nameable: `--default-runner ` on `EnvironmentCommand::Update`, rejecting a blank value via `validate_runner_uid` with "Default runner UID must not be blank" (`crates/warp_cli/src/environment.rs:97-99`, validator at `:21-27`). It has no gating feature flag, so nothing defers it on rollout status. **What defers it is the release boundary:** the commit landed 2026-10-05 (`023685490`, "[REMOTE-3350/REMOTE-3356] Set environment default runners through the Oz CLI"), five days *after* the current stable `v0.2026.09.30.08.29.stable_01` shipped on 2026-09-30, so it is in no stable release and absent from every changelog entry. Drafting now would repeat the `agentDefaults.computerUseModel` regression the criteria call out (docs#581): a page for an unshipped knob goes stale before it merges. No map entry — per-module CLI flags are snapshot-tracked rather than mapped, so the regen carries it. **Re-check when it appears in a stable release**, at which point it belongs on `platform/runners.mdx` or the environments CLI reference alongside the existing `oz runner` commands. | +| GET /factory/{uid}/integrations/jira/assignees | 2026-10-05 | deferred | Gate 0 | Searches assignable users across the factory's in-scope Jira projects through the workspace Jira Forge installation bound to the factory's Warp team, deduplicated by account ID (`listFactoryJiraAssignees` / `ListFactoryJiraAssigneesHandler`, `router/handlers/public_api/factories.go:112`). The only new API route this run and the sole `undocumented_api_endpoints` finding against this branch. Gate 0 fails twice over, exactly as its sibling Jira and Microsoft Teams pickers did: the operation carries `x-internal: true` under the `factory` tag (`public_api/openapi.yaml:882-883`), and `/factory` is excluded wholesale by `EXCLUDED_PATH_PREFIXES = ("/factory",)` (`sync_openapi.py:107`, applied at `:241`). Released `developers/agent-api-openapi.yaml` still has **zero** `/factory` paths and zero `x-internal` entries. It backs the factory integrations assignee picker, not the public Agent API, and the user-facing Jira flow is already documented at `factories/integrations/jira.mdx`. Mapped `-> internal`. Re-check when the Factory API is published. | +| n/a (10 changelog_review items re-surfaced, 2026-10-05) | 2026-10-05 | no | Already decided | The audit reported all 10 bullets for 2026.09.23 and 2026.09.30 because docs#811 merged the changelog entries into `src/content/docs/changelog/2026.mdx` while `surface_snapshot.json` still recorded an earlier `changelog_last_version`. Every one already carries a verdict: #16044, #16105, and #15654 are the three `yes` rows from 2026-09-30 (docs#805, docs#806, docs#807); Sign in with ChatGPT is the cleared deferral from 2026-10-02 (docs#815); #16094 is the `yes` row from 2026-10-02 (docs#816); and #16120, #14690, #15946, #16041, and #16050 are `no`. None re-evaluated. The snapshot regen advances the marker so they stop re-reporting. | +| n/a (24 potentially_stale_docs, 2026-10-05 run) | 2026-10-05 | no | Already decided / owned by style_lint | Identical file set and term set to 2026-10-02/09-30/29/28/25/24/23/18. The `ai credits` bucket-name rule remains the unresolved style-policy question in the Notes below, deliberately left for a human owner rather than narrowing `stale_terms.md` unattended. No missing content. | +| n/a (zero findings in six categories, 2026-10-05) | 2026-10-05 | n/a | Not a verdict | Recording the clean categories so a later run can tell "checked and empty" from "not checked". Against this branch: `undocumented_cli_commands`, `undocumented_slash_commands`, `undocumented_settings`, `stale_doc_references`, and `unlisted_pages` returned zero, and `map_hygiene` held only the in-flight `ChatGPTSubscription` page-target entry described in the run row above. `undocumented_features`, `undocumented_api_endpoints`, and `surface_changes` held only the three items verdicted above and drop to zero after the map edits and snapshot regen. Completeness accounting partitioned every surface with an empty `unaccounted` bucket: 296 flags (207 GA/preview — 137 mapped, 68 ignored; 89 tracked_non_ga), 91 CLI commands (30 mapped, 38 doc_covered, 14 gated_non_ga, 9 hidden), 230 API routes (183 mapped, 25 spec_covered, 12 gated_non_ga), 65 slash commands (15 mapped, 50 doc_covered), and 232 settings (15 mapped, 214 doc_covered, 1 private, 2 tracked_non_ga). | +| n/a (release v0.2026.09.30.08.29.stable_01) | 2026-10-02 | n/a | Not a verdict | Drift-watch processed stable `v0.2026.09.30.08.29.stable_01` (released 2026-09-30). Extended #768 rather than opening a second bookkeeping PR, merging `origin/main` first (terminology, computer-use, factory-as-code, harnesses, and the new `platform/data-storage.mdx`). Both audit modes exited 0 with `audits_skipped: []` and an empty `unaccounted` bucket (296 flags, 91 CLI commands, 229 API routes, 65 slash commands, 232 settings). Against `main` the run reproduced the known findings (9 `undocumented_api_endpoints`, 14 `surface_changes`, 13 `changelog_review`, 2 `map_hygiene`, 24 staleness), all already verdicted on this branch; against this branch only three live items remained: the `ChatGPTSubscription` flag, the removed Azure DevOps factory-setup route, and the 24 already-decided staleness rows. **`changelog_review` is empty again** because `src/content/docs/changelog/2026.mdx` still stops at 2026.09.16 — the 2026.09.23 and 2026.09.30 entries sit in open weekly-release PRs docs#804 and docs#811. This release's twelve bullets were therefore triaged directly from the `client_version` payload (`markdown_sections`; `oz_updates` was empty) and are verdicted in the rows below. This is the third consecutive release where the audit's changelog net had a hole, which is worth a skill fix rather than another workaround. Feature PRs this run: ChatGPT subscription and fzf Alt-C. Sibling checkouts: `warp` `master` `38b2c55e4`, `warp-server` `develop` `a34dd663a`, both 2026-10-02. | +| n/a (Sign in with ChatGPT) — deferral cleared | 2026-10-02 | yes | Gate 1 + Gate 2 + Gate 3 | **Supersedes the 2026-09-30 `deferred` row below.** That deferral was correct at `warp` `master` `7cef787ea`, where only inert plumbing existed. At `38b2c55e4` the whole surface is present in the public repo, so the blocking condition has cleared. Gate 0: `chatgpt_subscription` is in the `default = [...]` feature list in `app/Cargo.toml:694`, bridged to `FeatureFlag::ChatGPTSubscription` at `app/src/features.rs:512-513`, and absent from `RELEASE_FLAGS`/`PREVIEW_FLAGS`/`DOGFOOD_FLAGS` — GA. Gate 1 knobs: the **Continue with ChatGPT** and **Disconnect** buttons on the "Use OpenAI ChatGPT plan" row under **Custom Inference** (`render_chatgpt_subscription_row`, `app/src/settings_view/warp_agent_page.rs:5676-5791`; button construction at `5199-5221`; category header `"Custom Inference"` at `2364`), enabled only when `is_any_ai_enabled && is_byo_enabled && member_byo_keys_allowed` (`5228-5234`). Gate 2: a cross-service browser flow with five distinct named failures the user must respond to differently — `AlreadyLinked`, `EmailUnverified`, `Denied`, `AccountMismatch`, `Unknown`, each with its own copy (`on_chatgpt_connect_failed`, `2088-2124`). Gate 3 is the strongest: billing moves off Warp credits for OpenAI models (`UsesChatGPTSubscription`, warp-server `logic/ai/llm/user_api_keys/util.go:27-29` — a pasted OpenAI key wins over the plan), the server recomputes the model catalog and ungates tier-gated OpenAI models on connect (`ensureDefaultIsEnabled`, `logic/ai/model_choices/model_choices.go:389-396`; client-side refresh at `app/src/ai/llms.rs:2042-2064`), and background work the reader never initiated — conversation titles, context compaction, tool-result summaries — is billed to their plan and labeled for OpenAI (`subscription_sharing.go:11-24`). Also a factual correction: `bring-your-own-api-key.mdx:39` asserted "Can I sign in with a ChatGPT or Claude subscription? **No.**" **New page** `agents/inference/chatgpt-subscription.mdx`, justified against the existing IA by the sibling `grok-subscription.mdx` (one page per BYO inference path); plus the BYOK note correction, a comparison-table row, and sidebar entry. Mapped `ChatGPTSubscription -> chatgpt-subscription.mdx`. Deliberately silent on cloud agent runs: the credential is server-held rather than device-local, so the SuperGrok page's local-only caveat does not transfer, and `costResolution.CanUseByoKey` was not traced far enough to assert either way. | +| [#16094](https://github.com/warpdotdev/warp/pull/16094) — fzf Alt-C directory search | 2026-10-02 | yes | Gate 1 | Changelog "Improvements" bullet, `CHANGELOG-BUG-FIX` in the PR. Gate 1 knob is a real editable keybinding, not a shell detail: `workspace:trigger_external_alt_c_directory_search`, display name **External Directory Search**, default `alt-c` (`app/src/terminal/input.rs:2254-2256`), context-gated by `EXTERNAL_ALT_C_BINDING_CONTEXT` (`input.rs:446`). Gate 0 clears — `shell_widget_handoff` is a default cargo feature. The handoff is fzf-only: `external_alt_c_binding_eligible` requires `FZF_PLUGIN_TAG` on the session's shell and refuses while long-running or in the alternate screen (`app/src/terminal/view.rs:9672-9683`), so atuin keeps `Ctrl+R` only and `⌥C` still types `ç` in Vim. Shell helpers `warp_run_external_alt_c_widget` land in all three integrations (`zsh_body.sh:762`, `fish.sh:618`, `bash_body.sh:1004`). **Update, not a new page:** `terminal/entry/command-search.mdx:25` already enumerated the `Ctrl+R` and `Ctrl+T` handoffs, so omitting `⌥C` left the page incomplete. Added a `### Handing off to fzf` subsection and trimmed the `Ctrl+T` clause out of the paragraph above it. | +| [#16120](https://github.com/warpdotdev/warp/pull/16120) | 2026-10-02 | no | Disqualified: pure UI affordance | "Added the option to switch teams from Settings > Teams." A second entry point to a capability already documented, and the sibling relocation #16041 was verdicted `no` on the same grounds on 2026-09-30. No setting key, CLI flag, or API field. | +| [#14690](https://github.com/warpdotdev/warp/pull/14690) | 2026-10-02 | no | Disqualified: pure UI affordance / small and intuitive | "Vertical tabs search now matches and highlights tab group names." Widens an existing search's match set and highlights the hit. Nothing to configure, nothing that fails, and a reader who types a group name sees the result immediately. Tab groups and vertical tabs are already documented at `terminal/windows/tabs.mdx`. | +| [#16072](https://github.com/warpdotdev/warp/pull/16072), [#16029](https://github.com/warpdotdev/warp/pull/16029), [#16138](https://github.com/warpdotdev/warp/pull/16138), [#16122](https://github.com/warpdotdev/warp/pull/16122), [#16123](https://github.com/warpdotdev/warp/pull/16123), [#16124](https://github.com/warpdotdev/warp/pull/16124), [#16110](https://github.com/warpdotdev/warp/pull/16110), [#16102](https://github.com/warpdotdev/warp/pull/16102), [#16073](https://github.com/warpdotdev/warp/pull/16073) | 2026-10-02 | no | Disqualified: bug fix restoring intended behavior | The nine "Bug fixes" bullets for 2026.09.30, recorded rather than skipped so the release is fully accounted for even though the audit deliberately does not track that section. Two windows opening on Windows launch; model preference reset on team catalog refresh; focus not restored after a tab context menu; typed query not forwarded to zsh fzf `Ctrl+R`; external fzf `Ctrl+R` picker layout; flag completions after a POSIX `--`; agent management costs ignoring the Credits/Dollars setting; a panic when `/model` targets a closed window; scope-specific spend limit alerts. Each restores documented or obviously-intended behavior, and no page describes the broken behavior. #16110 and #16073 touch usage and spend-limit display, both already documented under `support-and-community/plans-and-billing/`; the underlying `usage_display_unit` setting stays deferred behind dogfood `PricingTransparency` (2026-08-28 row). | +| POST /factory-setup/azure-devops-creation-requests (removed) | 2026-10-02 | no | Map hygiene | The route deferred on 2026-09-30 is gone from warp-server: no `SubmitAzureDevOpsCreationRequestHandler` registration and no `azure-devops-creation-requests` path remain under `router/handlers/public_api/`, and `public_api/openapi.yaml` no longer carries the operation. The `/factory-setup` group itself survives for the Jira and Linear pickers. It never reached the released `developers/agent-api-openapi.yaml`, so nothing is documented to correct. Dead map entry pruned, with a comment left in its place. | +| n/a (24 potentially_stale_docs, 2026-10-02 run) | 2026-10-02 | no | Already decided / owned by style_lint | Identical file set and term set to 2026-09-30/29/28/25/24/23/18. The `ai credits` bucket-name rule remains the unresolved style-policy question in the Notes below, deliberately left for a human owner rather than narrowing `stale_terms.md` unattended. No missing content. | +| n/a (zero findings in eight categories, 2026-10-02) | 2026-10-02 | n/a | Not a verdict | Recording the clean categories so a later run can tell "checked and empty" from "not checked". Against this branch: `undocumented_cli_commands`, `undocumented_api_endpoints`, `undocumented_slash_commands`, `undocumented_settings`, `changelog_review`, `stale_doc_references`, and `unlisted_pages` returned zero; `undocumented_features`, `surface_changes`, and `map_hygiene` held only the two items verdicted above and drop to zero after the page, map edit, and snapshot regen. Completeness accounting partitioned every surface with an empty `unaccounted` bucket: 296 flags (206 GA/preview — 137 mapped, 68 ignored; 90 tracked_non_ga), 91 CLI commands (30 mapped, 38 doc_covered, 14 gated_non_ga, 9 hidden), 229 API routes (183 mapped, 25 spec_covered, 12 gated_non_ga), 65 slash commands (15 mapped, 50 doc_covered), and 232 settings (15 mapped, 214 doc_covered, 1 private, 2 tracked_non_ga). | +| n/a (release v0.2026.09.23.14.34.stable_01) | 2026-09-30 | n/a | Not a verdict | Drift-watch processed stable `v0.2026.09.23.14.34.stable_01` (released 2026-09-23) — the first genuinely new release since this branch was opened for `v0.2026.09.16.08.27.stable_02`. Extended #768 rather than opening a second bookkeeping PR, merging `origin/main` first. Both audit modes exited 0 with `audits_skipped: []` and an empty `unaccounted` bucket (295 flags, 91 CLI commands, 230 API routes, 65 slash commands, 232 settings). Against `main` the run reproduced the known findings exactly (10 `undocumented_api_endpoints`, 14 `surface_changes`, 13 `changelog_review`, 2 `map_hygiene`, 24 staleness), all already carrying verdicts on this branch; against this branch only one new tracked surface appeared (the Azure DevOps factory-setup route below) plus the 24 already-decided staleness rows. **`changelog_review` is empty even though a new release shipped**, because `src/content/docs/changelog/2026.mdx` still stops at 2026.09.16 — the 2026.09.23 entry lands in the open weekly-release PR docs#804. The release's bullets were therefore triaged directly from the `client_version` payload (`markdown_sections` plus `oz_updates`) rather than from the audit; all eleven are verdicted in the rows below. Feature PRs: docs#805 (AWS ECR credential secrets), docs#806 (Vim line text objects), docs#807 (snapshot on interrupt). Sibling checkouts: `warp` `master` `7cef787ea`, `warp-server` `develop` `87477d446`, both 2026-09-30. `npm ci && npm run build` passes (389 Markdown docs, 391 HTML files). | +| [#16044](https://github.com/warpdotdev/warp/pull/16044) — AWS ECR credentials in managed secrets | 2026-09-30 | yes | Gate 1 + Gate 2 | New `aws_ecr_credential` managed secret type: Warp stores a registry host and an IAM role ARN and assumes the role to mint a fresh ECR pull credential at dispatch time, so no password is ever stored (`ManagedSecretValue::AwsEcrCredential`, `crates/managed_secrets/src/secret_value.rs:54-59` and `118-127`; display name "AWS ECR Credential", `app/src/ai/agent_sdk/secret.rs:1034`). Gate 1 knobs are the **AWS ECR credential** option in the "Type" dropdown plus the **IAM role ARN** and **AWS region** fields (`CreateSecretPane.tsx:61-72`, `428-463`). Gate 2 is the load-bearing one: setup spans AWS and Warp — create an IAM role from the server-rendered trust policy that already carries the team's external ID (`awsRoleTrustPolicyJsonTemplate`, `GetEcrCredentialSetupInstructions.ts`), attach `ECR_READ_PERMISSIONS_POLICY_JSON` (`ecr:GetAuthorizationToken` plus `BatchCheckLayerAvailability`/`BatchGetImage`/`GetDownloadUrlForLayer`), then supply the ARN and region, with validation rejecting a non-ECR host shape and a malformed ARN (`useCreateEcrCredentialSecret.ts:30-88`). Gate 0 clears: announced in this stable's changelog, no feature flag on the create form, and the type enum lives in the public `warpdotdev/warp` repo. Team-scoped only; never env-injected (`validate_field_sizes` short-circuits for `AwsEcrCredential`, `secret_value.rs:187-191`); no CLI create path and `--value` update rejected with "AWS ECR credential secrets cannot be updated via `--value`; re-create the secret instead" (`secret.rs:683-688`). Updated `platform/secrets.mdx` (feature PR docs#805). Placed in a hunk that does not overlap open PR docs#767, which documents the sibling `docker-registry` type on the same page. | +| [#16105](https://github.com/warpdotdev/warp/pull/16105) — Neovim 0.13 `al` / `il` text objects | 2026-09-30 | yes | Gate 1 | Concrete, nameable bindings, and the same shape as the `<` / `>` calibration pass in `docs-worthiness-criteria.md` (#14268): a row in an existing reference table, not a new page. `vim_inner_line` trims leading and trailing spaces and tabs from the current line and returns `None` when nothing remains, so `il` no-ops on a blank line; `vim_all_lines` returns the whole buffer, so `al` is **not** "the current line plus its newline" as a Vim user would guess (`crates/vim/src/text_objects/line.rs:6-49`). Dispatched charwise for `Inner` and extended linewise for `Around` (`app/src/code/editor/model.rs:3345-3348`, `3439-3443`), shared across the input editor, code editor, and TUI (`crates/warp_tui/src/input/vim.rs`). Counts unsupported, matching Neovim 0.13. Added an `l` row plus one semantics sentence to the text-object tables on both `terminal/editor/vim.mdx` and `code/code-editor/code-editor-vim-keybindings.mdx` (feature PR docs#806, reviewer `liliwilson` — the sole owner of `crates/vim/`). | +| [#15654](https://github.com/warpdotdev/warp/pull/15654) — handoff snapshot on SIGTERM/SIGINT | 2026-09-30 | yes | Gate 3 | `oz_updates` bullet, invisible to the audit. On the first `SIGTERM` or `SIGINT` the driver aborts `run_internal` and calls `save_run_artifacts(&foreground, snapshot_allowed)` before re-raising the default action, where `snapshot_allowed = FeatureFlag::OzHandoff.is_enabled() && task_id.is_some() && !snapshot_disabled` (`app/src/ai/agent_sdk/driver.rs:1588-1608`); a second signal emulates the default handler immediately (`driver.rs:1604`, `driver/termination/unix.rs`). `oz_handoff` is a default cargo feature (`app/Cargo.toml:681`), so Gate 0 clears. Gate 3: an interrupted run used to end with nothing uploaded, so a reader would redo the work rather than continue the run — and `platform/handoff/snapshots.mdx` stated the old behavior outright ("At the end of every cloud agent run..."), making this a factual correction as well as a behavior change. Added an `### Interrupted runs` subsection and corrected the opening paragraph (feature PR docs#807). No reviewer requested: `app/src/ai/agent_sdk/` resolves to two owners. | +| n/a (Sign in with ChatGPT, 2026.09.23 new features) | 2026-09-30 | deferred (cleared 2026-10-02 — see the `yes` row above) | Cannot verify against public source | **The most significant gap this run, and deliberately not drafted.** The changelog announces "You can now sign in with ChatGPT to use your ChatGPT plan with Warp's agent. Go to Settings > Agents > Warp Agent > Custom Inference to enable." Rollout is not in doubt — it shipped in this stable. What is missing is any verifiable source: a repo-wide case-insensitive search of the public `warpdotdev/warp` checkout at `master` `7cef787ea` finds only inert plumbing — `supports_chatgpt_subscription_error: false` hardcoded (`app/src/ai/agent/api/impl.rs:116`), `chatgpt_delegated_access_token: String::new()` and `skip_chatgpt_subscription: false` hardcoded (`crates/ai/src/api_keys.rs:1099-1100`), a `ChatgptSubscriptionError` stream-finished arm that only surfaces a server-supplied message (`app/src/ai/blocklist/controller.rs:3740`), and an unmerged branch `origin/suraj/chatgpt-subscription`. The **Custom Inference** settings category contains only `ApiKeysWidget` (`app/src/settings_view/warp_agent_page.rs:2143-2157`) — no ChatGPT sign-in control, no OAuth flow of the kind Grok has (`grok_oauth_access_token`, `api_keys.rs:1046-1054`), and no gating flag. Drafting would mean inventing the labels, the sign-in steps, the supported models, and the credit consequences. Per the skill's "when unsure, DEFER it and note it" rule, recorded here instead. **This needs a human owner**, not a re-run: the re-check condition is the sign-in surface appearing in the public repo (or someone on the Warp Agent team confirming the flow), and the likely home is `agents/inference/` alongside `bring-your-own-api-key.mdx` and `custom-inference-endpoint.mdx`. | +| [#15946](https://github.com/warpdotdev/warp/pull/15946) | 2026-09-30 | no | Disqualified: pure UI affordance / small and intuitive | Conversation usage popover in the agent input footer, showing conversation-level usage and cost with per-model breakdowns ("[APP-5720] Conversation usage popover in the agent input footer"). No setting, CLI flag, or API field — Gate 1 does not fire; nothing fails and nothing the reader relied on changed, so Gates 2 and 3 do not; the footer control surfaces it in-product, so Gate 4's second condition fails. Usage and credits are already documented under `support-and-community/plans-and-billing/`, and the related `agents.warp_agent.other.usage_display_unit` setting stays deferred behind dogfood `PricingTransparency` (2026-08-28 row). | +| [#16041](https://github.com/warpdotdev/warp/pull/16041) | 2026-09-30 | no | Disqualified: pure UI affordance | Team switcher moved next to the profile avatar. A relocated control, which the disqualifier names explicitly. Team switching itself is already documented. | +| [#16050](https://github.com/warpdotdev/warp/pull/16050) | 2026-09-30 | no | Disqualified: bug fix restoring intended behavior | `oz agent run --idle-on-complete 0m` now cancels any pending idle timer and completes immediately rather than scheduling a zero-length timer (`complete_with_optional_idle`, `app/src/ai/agent_sdk/driver.rs:362-375`). The docs already describe the intended behavior — `platform/self-hosting/reference.mdx:30` says "Set to `0s` to disable" — so the fix made reality match the page. Nothing to correct. | +| [#16093](https://github.com/warpdotdev/warp/pull/16093), [#16083](https://github.com/warpdotdev/warp/pull/16083), [#16070](https://github.com/warpdotdev/warp/pull/16070), [#16055](https://github.com/warpdotdev/warp/pull/16055), [#16052](https://github.com/warpdotdev/warp/pull/16052), [#15996](https://github.com/warpdotdev/warp/pull/15996) | 2026-09-30 | no | Disqualified: bug fix restoring intended behavior | The six "Bug fixes" bullets for 2026.09.23, recorded rather than skipped so the release is fully accounted for even though the audit deliberately does not track that section. File and path suggestions when native shell completion returns no candidates; team discovery showing native workspace options; usage displays showing a minimum threshold instead of `$0.00`; image pasting into CLI agents from TIFF clipboard data; shared sessions stuck reconnecting; a crash opening a child agent from its pill. Each restores documented or obviously-intended behavior; no page describes the broken behavior. | +| POST /factory-setup/azure-devops-creation-requests | 2026-09-30 | deferred | Gate 0 | Freezes a validated Azure DevOps factory create request and sends it to a Microsoft administrator for permission approval, creating the factory as the caller once approved (`SubmitAzureDevOpsCreationRequestHandler`, `router/handlers/public_api/factories.go:96`, under `factorySetupGroup := group.Group("/factory-setup")` at line 89). The only new tracked surface since the 2026-09-29 residual, and both the sole `undocumented_api_endpoints` finding and the sole `surface_changes` entry against this branch. Gate 0 fails twice: `submitAzureDevOpsCreationRequest` carries `x-internal: true` under the `factory` tag (`public_api/openapi.yaml:228-244`), and `/factory-setup` is matched by the `/factory` prefix that `sync_openapi.py` excludes wholesale via `EXCLUDED_PATH_PREFIXES`. Released `developers/agent-api-openapi.yaml` still has zero `/factory` paths. Mapped `-> internal`. Re-check when the factory API is published. | +| n/a (24 potentially_stale_docs, 2026-09-30 run) | 2026-09-30 | no | Already decided / owned by style_lint | Identical file set and term set to 2026-09-29/28/25/24/23/18. The `ai credits` bucket-name rule remains the unresolved style-policy question in the Notes below, deliberately left for a human owner rather than narrowing `stale_terms.md` unattended. No missing content. | +| n/a (zero findings in nine categories, 2026-09-30) | 2026-09-30 | n/a | Not a verdict | Recording the clean categories so a later run can tell "checked and empty" from "not checked". Against this branch: `undocumented_features`, `undocumented_cli_commands`, `undocumented_slash_commands`, `undocumented_settings`, `changelog_review`, `map_hygiene`, `stale_doc_references`, and `unlisted_pages` all returned zero, and `undocumented_api_endpoints` / `surface_changes` held only the Azure DevOps route above (zero after the map edit). Completeness accounting partitioned every surface with an empty `unaccounted` bucket: 295 flags (205 GA/preview — 137 mapped, 68 ignored; 90 tracked_non_ga), 91 CLI commands (30 mapped, 38 doc_covered, 14 gated_non_ga, 9 hidden), 230 API routes (183 mapped, 25 spec_covered, 12 gated_non_ga), 65 slash commands (15 mapped, 50 doc_covered), and 232 settings (15 mapped, 214 doc_covered, 1 private, 2 tracked_non_ga). | +| n/a (2026-09-29 residual re-verification of v0.2026.09.16.08.27.stable_02) | 2026-09-29 | n/a | Not a verdict | Drift-watch re-entry on 2026-09-29. Release gate on `main` still reports this stable as new because the marker lives only on bookkeeping branch #768; on the branch it exits 10. Extended #768 rather than opening a second bookkeeping PR, merging `origin/main` first (workspaces + enterprise/team-management content since the 2026-09-28 residual). **One new tracked surface since 2026-09-28:** `POST /factory-inbox/notifications/{uid}/answers` (see dedicated row). Both audit modes exited 0 with `audits_skipped: []` and an empty `unaccounted` bucket before the map edit (295 flags, 91 CLI commands, 229 API routes, 65 slash commands, 232 settings). Against this branch pre-map the only standing gaps were that one API finding/surface_change pair plus the 24 already-decided `potentially_stale_docs` rows. After mapping the route `-> internal` and regenerating the snapshot, `undocumented_api_endpoints`, `surface_changes`, `changelog_review`, and `map_hygiene` are zero on this branch. Sibling checkouts: `warp` `master` `2f5447c23` (2026-09-28), `warp-server` `develop` `a39c913c7` (2026-09-28). All 13 changelog/`oz_updates` bullets and prior API deferrals already carry ledger verdicts from 2026-09-18–28. No new feature PR; no second bookkeeping PR. | +| POST /factory-inbox/notifications/{uid}/answers | 2026-09-29 | deferred | Gate 0 | New personal factory-inbox route (`AnswerFactoryQuestionsHandler` / `answerFactoryQuestions`, `router/handlers/public_api/factory_inbox.go:30`, `inboxGroup.POST("/notifications/:uid/answers", ...)`). Submits all question answers on a current notification as one root-run follow-up (`logic.PrepareFactoryQuestionAnswers` / `FactoryQuestionAnswersRequest`). Behind `RequireFactoryAccess` and `requireFactoryTasksEnabled`. Operation carries `x-internal: true` in warp-server `public_api/openapi.yaml` (~line 2500); sits under `/factory-inbox`, which `sync_openapi.py` excludes via `EXCLUDED_PATH_PREFIXES = ("/factory",)` (path prefix match). Released `developers/agent-api-openapi.yaml` still has zero `/factory-inbox` paths. Backs factory UI inbox Q&A, not the public Agent API. Mapped `-> internal`. Re-check when the factory API is published / `x-internal` drops. | +| n/a (24 potentially_stale_docs, 2026-09-29 residual) | 2026-09-29 | no | Already decided / owned by style_lint | Same term set as 2026-09-28/25/24/23/18. No missing content; left to `style_lint`. | +| n/a (2026-09-28 exhaustive residual re-verification of v0.2026.09.16.08.27.stable_02) | 2026-09-28 | n/a | Not a verdict | Drift-watch re-entry on 2026-09-28, the first pass since 2026-09-25, requested as an exhaustive sweep across every category at every severity. The release gate on `main` still reports this stable as new because the marker lives only on this branch; on the branch it exits 10 as expected. Extended #768 rather than opening a second bookkeeping PR, merging `origin/main` first (two content commits since the 2026-09-25 residual: `factories/benchmarks.mdx` and `platform/architecture.mdx`). **Nothing new to decide — no tracked surface moved.** `--update-snapshot` against `warp` (`master`, `e7656eab3`, 2026-09-28) and `warp-server` (`develop`, `6627c8e10`, 2026-09-28), both three days newer than the 2026-09-25 regen, reproduced this branch's `surface_snapshot.json` **byte for byte** across 295 flags, 91 CLI commands, 228 API routes, 65 slash commands, 232 settings, 23 web routes, 73 server tools, and 17 bundled skills. Both audit modes exited 0 with `audits_skipped: []` and an empty `unaccounted` bucket. Against `main` the run reproduced the known findings exactly (8 `undocumented_api_endpoints`, 12 `surface_changes`, 13 `changelog_review`, 2 `map_hygiene`, 24 staleness); against this branch all of those drop to zero except the 24 already-decided staleness rows. Re-verified the load-bearing Gate 0 evidence at source rather than carrying it forward: `getRunHarnessUsage` (openapi.yaml:7470), `publishHarnessUsage` (10436), `listFactoryMicrosoftTeamsTeams` (1374), `listFactoryMicrosoftTeamsChannels` (1422), and `rescoreBenchmarkRun` (12439) all still carry `x-internal: true`; `createScoringBackfill` (11161), `markFactoryInboxNotificationsRead` (2604), and `markFactoryInboxNotificationsUnread` (2655) are **not** `x-internal` but sit under `/factory*`, which `sync_openapi.py:107` excludes wholesale via `EXCLUDED_PATH_PREFIXES = ("/factory",)` — and released `developers/agent-api-openapi.yaml` still has zero `/factory`, `/factory-inbox`, and `/harness-support` paths, zero `x-internal` entries, and no `harness-usage` operation. So all eight stay correctly mapped `-> internal`. Confirmed `OrchestrationUnifiedStack` and `WaitForEventsParentRegistration` have no remaining reference anywhere in `crates/` or `app/`, so the 2026-09-23 ignore-list pruning is correct. Also swept the three documented blind spots the audit cannot see itself: the surface-scoped slash check across all 65 registry entries (33 GuiOnly, 18 TuiOnly, 14 GuiAndTui, none carrying a `feature_flag`) finds **zero** TUI-available commands missing from `agents/cli/` and leaves only `/docker-sandbox` uncovered, still non-GA via `LocalDockerSandbox` (`crates/warp_features/src/lib.rs:1053`, in `DOGFOOD_FLAGS` and `PREVIEW_FLAGS`, not a default cargo feature); `CreateProvider` still has exactly three variants (`claude`, `codex`, `docker-registry`, `crates/warp_cli/src/secret.rs:65-75`), so the `Args`-struct extractor gap hides nothing new; and `--weak-coverage` returns 81, down one from 82 on 2026-09-21 because two flags were removed from code. Re-checked the five staleness term classes at their source lines: `warp ai` → the historical FAQ heading `agents/getting-started/faqs.mdx:18`; `generate command` → the live "Generate commands as command-line input" heading on the "Generate (Legacy)" page; `ai command` → AI Command Search at `terminal/entry/index.mdx:11`; `ai credits` → the bucket name (`credits.mdx:17` defines it against compute and platform credits — still the unresolved style-policy question in the Notes, deliberately left for a human); `warp terminal` → permitted distinguishing usage, with `terminal/more-features/index.mdx:4` still the one genuine wording nit SKILL.md assigns to `style_lint`. All three skill test suites pass (19 + 18 + 17), so no extractor has rotted. `npm ci && npm run build` passes on the merged branch (388 Markdown docs, 390 HTML files). `suggest_reviewers.py` resolves `@warpdotdev/oss-maintainers` (root rule), `@moirahuang` (slash command registry), and `@bnavetta @ianhodge` (`crates/warp_cli/`), with all six warp-server handler paths unowned — several distinct owners is not a single clear owner, so no new reviewer was requested and the existing `dannyneira` request is kept. No new feature PR, and no second bookkeeping PR. | +| n/a (81 --weak-coverage feature findings, 2026-09-28 residual) | 2026-09-28 | no | Disqualified: not a docs gap / heuristic false positive | Ran `--weak-coverage` for exhaustiveness. 81, down one from the 82 on 2026-09-21 because `OrchestrationUnifiedStack` and `WaitForEventsParentRegistration` left the flag universe. Every hit is a mapped page that lacks a phrase derived from an internal CamelCase flag name. Spot-verified five this run, all covered: `CommandCorrectionKey` → `terminal/entry/command-corrections.mdx` has a "Command correction rules" section; `DynamicWorkflowEnums` → `knowledge-and-collaboration/warp-drive/workflows.mdx` has "Enum type arguments"; `ClassicCompletions` → `terminal/command-completions/completions.mdx` documents completions end to end; `RectSelection` → `terminal/more-features/text-selection.mdx` has "Rectangular selection"; `ViewingSharedSessions` → `knowledge-and-collaboration/session-sharing/index.mdx` covers agent and cloud agent session sharing. Keyword artifacts, which is why the flag is off by default. | +| n/a (24 potentially_stale_docs, 2026-09-28 residual) | 2026-09-28 | no | Already decided / owned by style_lint | Identical file set and term set to 2026-09-25/24/23/18, re-verified at source lines rather than carried forward (see the term-class breakdown in the row above). 13 files are the `ai credits` bucket-name false positive; the `warp terminal` hits are the distinguishing usage the rule's own reason exempts. No missing content; `stale_terms.md` deliberately not narrowed unattended. | +| n/a (zero findings in ten categories, 2026-09-28) | 2026-09-28 | n/a | Not a verdict | Recording the clean categories so a later run can tell "checked and empty" from "not checked". Against this branch: `undocumented_features`, `undocumented_cli_commands`, `undocumented_api_endpoints`, `undocumented_slash_commands`, `undocumented_settings`, `surface_changes`, `changelog_review`, `map_hygiene`, `stale_doc_references`, and `unlisted_pages` all returned zero. Completeness accounting partitioned every surface with an empty `unaccounted` bucket: 295 flags (205 GA/preview — 137 mapped, 68 ignored; 90 tracked_non_ga), 91 CLI commands (30 mapped, 38 doc_covered, 14 gated_non_ga, 9 hidden), 228 API routes (183 mapped, 25 spec_covered, 12 gated_non_ga, 8 finding on `main` and 0 on this branch), 65 slash commands (15 mapped, 50 doc_covered), and 232 settings (15 mapped, 214 doc_covered, 1 private, 2 tracked_non_ga). | +| n/a (2026-09-25 residual re-verification of v0.2026.09.16.08.27.stable_02) | 2026-09-25 | n/a | Not a verdict | Eighth drift-watch pass over this stable; the release gate on `main` still reports it as new because the marker lives only on this branch (`last_release_processed.json` already carries `v0.2026.09.16.08.27.stable_02` here). Extended #768 rather than opening a second bookkeeping PR. Merged `origin/main` first (docs content commits since the 2026-09-24 residual: cloud federation claims, K8s troubleshooting, factory skills/integrations, models, SEO, afdocs/404 logs). Both audit modes exited 0 with `audits_skipped: []` and an empty `unaccounted` bucket (295 flags, 91 CLI commands, 228 API routes, 65 slash commands, 232 settings). Against this branch after map updates, `undocumented_api_endpoints`, `surface_changes`, `changelog_review`, and `map_hygiene` drop to zero; only the 24 already-decided `potentially_stale_docs` rows remain. All 13 changelog/`oz_updates` bullets and #15913 already carry ledger verdicts from 2026-09-18; feature PR docs#767 remains open with reviewer `dannyneira`. No new feature PR. | +| POST /factory-inbox/notifications/read, POST /factory-inbox/notifications/unread | 2026-09-25 | deferred | Gate 0 | Bulk mark-read / mark-unread for personal factory inbox notifications (`markFactoryInboxNotificationsRead` / `markFactoryInboxNotificationsUnread`, `router/handlers/public_api/factory_inbox.go:31-48`, via `logic.SetFactoryInboxNotificationsRead`). Behind `RequireFactoryAccess` and `requireFactoryTasksEnabled`. Operations sit under the `factory` tag, which carries `x-internal: true` in warp-server `public_api/openapi.yaml`; sibling dismiss/restore/get routes are also `x-internal: true`. Released `developers/agent-api-openapi.yaml` still has zero `/factory-inbox` paths (`EXCLUDED_PATH_PREFIXES` / factory tag exclusion in sync-openapi-spec). Back factory UI inbox state, not the public Agent API. Mapped both `-> internal`. Re-check when the factory API is published. | +| WindowsVideoRecording (re-check) | 2026-09-25 | deferred | Gate 0 | Still in `DOGFOOD_FLAGS` (`crates/warp_features/src/lib.rs:1040`). Not GA. | +| n/a (24 potentially_stale_docs, 2026-09-25 residual) | 2026-09-25 | no | Already decided / owned by style_lint | Same term set as 2026-09-24/23/18. No missing content. | +| n/a (2026-09-24 residual re-verification of v0.2026.09.16.08.27.stable_02) | 2026-09-24 | n/a | Not a verdict | Seventh drift-watch pass over this stable; the release gate on `main` still reports it as new because the marker lives only on this branch (`last_release_processed.json` already carries `v0.2026.09.16.08.27.stable_02` here, processed_at 2026-09-23). Extended #768 rather than opening a second bookkeeping PR. `origin/main` was already merged (no new commits since the 2026-09-23 pass). Both audit modes exited 0 with `audits_skipped: []` and an empty `unaccounted` bucket (295 flags, 91 CLI commands, 226 API routes, 65 slash commands, 232 settings). Against this branch only the 24 already-decided `potentially_stale_docs` rows remain; `undocumented_*`, `surface_changes`, `changelog_review`, and `map_hygiene` are all zero. `--update-snapshot` against current `warp` (`master`, `2120e3794`, 2026-09-23) and `warp-server` (`develop`, `1b840d69c`, 2026-09-23) reproduced this branch's `surface_snapshot.json` **byte for byte**, so no tracked surface moved since the 2026-09-23 residual. Re-verified Gate 0 at source rather than carrying it forward: `getRunHarnessUsage` and `publishHarnessUsage` still carry `x-internal: true`; `listFactoryMicrosoftTeamsTeams`, `listFactoryMicrosoftTeamsChannels`, and `rescoreBenchmarkRun` still carry `x-internal: true` under the factory tag; `createScoringBackfill` is still under `/factory` (excluded by `EXCLUDED_PATH_PREFIXES` in `sync_openapi.py:107`) and released `developers/agent-api-openapi.yaml` still has zero `/factory` paths. `WindowsVideoRecording` remains in `DOGFOOD_FLAGS` (`crates/warp_features/src/lib.rs:1040`). All 13 changelog/`oz_updates` bullets and #15913 already carry ledger verdicts from 2026-09-18; feature PR docs#767 remains open with reviewer `dannyneira`. Skill test suites pass (19 + 18 + release-gate). `suggest_reviewers.py` resolves only the `@warpdotdev/oss-maintainers` team for warp features, with all four warp-server handler paths unowned, so the existing `dannyneira` request is kept. No new feature PR, and no second bookkeeping PR. | +| n/a (2026-09-23 residual pass of v0.2026.09.16.08.27.stable_02) | 2026-09-23 | n/a | Not a verdict | Sixth drift-watch pass over this stable; the release gate on `main` still reports it as new because the marker lives only on this branch. Extended #768 rather than opening a second bookkeeping PR. Merged `origin/main` first so the snapshot describes the post-merge tree. Unlike the 2026-09-22 pass, tracked surfaces **did** move: three new factory API routes, two GA flag removals (map hygiene), and one server tool. Both audit modes exited 0 with `audits_skipped: []` and an empty `unaccounted` bucket. Against this branch after map updates, `undocumented_api_endpoints`, `surface_changes`, `changelog_review`, and `map_hygiene` drop to zero; only the 24 already-decided `potentially_stale_docs` rows remain. All 13 changelog/`oz_updates` bullets and #15913 already carry ledger verdicts from 2026-09-18; feature PR docs#767 remains open with reviewer `dannyneira`. No new feature PR. | +| GET /factory/{uid}/integrations/microsoft-teams/teams, GET /factory/{uid}/integrations/microsoft-teams/teams/{team_id}/channels | 2026-09-23 | deferred | Gate 0 | Team and channel pickers for factory Microsoft Teams automations (`listFactoryMicrosoftTeamsTeams` / `listFactoryMicrosoftTeamsChannels`, `router/handlers/public_api/factories.go:104-105`). Both carry `x-internal: true` under the `factory` tag in warp-server `public_api/openapi.yaml`; released `developers/agent-api-openapi.yaml` still has zero `/factory` paths. Back factory-UI pickers, not the public Agent API. Mapped both `-> internal`. Re-check when the factory API is published. | +| POST /factory/{uid}/benchmarks/runs/{run_uid}/rescore | 2026-09-23 | deferred | Gate 0 | Rescores missing results on a completed benchmark run (`rescoreBenchmarkRun`, `RescoreBenchmarkRunHandler` in `router/handlers/public_api/benchmarks.go:297-372`). Marked `x-internal: true` under the factory tag; released OpenAPI has zero `/factory` paths. Mapped `-> internal`. Re-check when the factory API is published. | +| OrchestrationUnifiedStack, WaitForEventsParentRegistration (flags removed) | 2026-09-23 | no | Disqualified: no user-observable change / flag cleanup | Both were GA orchestration-plumbing flags with no setting, CLI flag, or workflow change (previously ignore-listed as internal details of multi-agent orchestration). Removed from `crates/warp_features` / `app/src/features.rs`. Orchestration docs at `platform/orchestration/multi-agent-runs.mdx` still describe the product surface. Pruned dead ignore-list entries (map hygiene). | +| report_self_improvement_metadata (server tool added) | 2026-09-23 | no | Disqualified: no user-observable change requiring action / already documented | New multi-agent server tool (`logic/ai/multi_agent/runtime/report_self_improvement_metadata.go`) used inside factory self-improvement runs to record metadata. No user-facing knob, CLI flag, or API field. Self-improvement itself is already documented at `factories/measure-and-improve/self-improvement/`. Snapshot tracks the tool; no map entry required for server tools. | +| n/a (24 potentially_stale_docs, 2026-09-23 residual) | 2026-09-23 | no | Already decided / owned by style_lint | Same term set as 2026-09-18/14/11. No missing content. | +| n/a (2026-09-22 residual re-verification of v0.2026.09.16.08.27.stable_02) | 2026-09-22 | n/a | Not a verdict | Fifth drift-watch pass over this stable; the release gate on `main` still reports it as new because the marker lives only on this branch (`last_release_processed.json` already carries `v0.2026.09.16.08.27.stable_02` here). Extended #768 rather than opening a second bookkeeping PR. Independently re-verified rather than carrying forward: both audit modes exited 0 with `audits_skipped: []` and an empty `unaccounted` bucket (297 flags, 91 CLI commands, 223 API routes, 65 slash commands, 232 settings). Against this branch only the 24 already-decided `potentially_stale_docs` rows remain; against `main` the three mapped internal routes (`GET /agent/runs/{runId}/harness-usage`, `POST /harness-support/usage`, `POST /factory/scorers/{scorer_id}/backfill`) and `WindowsVideoRecording` reappear until #768 merges. Re-checked Gate 0 at source: `getRunHarnessUsage` and `publishHarnessUsage` still carry `x-internal: true` in warp-server `public_api/openapi.yaml`; `createScoringBackfill` remains under the factory tag that is itself `x-internal: true` (released `developers/agent-api-openapi.yaml` still has zero `/factory` paths and no harness-usage operation); `WindowsVideoRecording` is still in `DOGFOOD_FLAGS` (`crates/warp_features/src/lib.rs:1051`). `--update-snapshot` against current `warp` (`master`, `f4f9b8838`, 2026-09-21) and `warp-server` (`develop`, `28e045197`, 2026-09-21) reproduced this branch's `surface_snapshot.json` byte for byte. No new feature PR; feature PR docs#767 (docker-registry secrets) remains the only content PR from the 2026-09-18 triage. | +| n/a (2026-09-21 residual re-verification of v0.2026.09.16.08.27.stable_02) | 2026-09-21 | n/a | Not a verdict | Fourth drift-watch pass over this stable; the release gate on `main` still reports it as new because the marker lives only on this branch (`last_release_processed.json` already carries it here). Extended #768 rather than opening a second bookkeeping PR. Merged `origin/main` (`298e5a14`, two unrelated commits: docs#752 factory code-forge wording and docs#763 AFDocs link absolutization) into the branch first, so the snapshot and audit describe the post-merge tree rather than a stale one. Both audit modes exited 0 with `audits_skipped: null` and an empty `unaccounted` bucket (297 flags, 91 CLI commands, 223 API routes, 65 slash commands, 232 settings). Against this merged branch, `undocumented_features`, `undocumented_cli_commands`, `undocumented_api_endpoints`, `undocumented_slash_commands`, `undocumented_settings`, `surface_changes`, `changelog_review`, `map_hygiene`, `stale_doc_references`, and `unlisted_pages` are **all zero**; only the 24 already-decided `potentially_stale_docs` rows remain. `--update-snapshot` against `warp` (`master`, `3c520bed7`, 2026-09-21) and `warp-server` (`develop`, `a1f654c93`, 2026-09-21) — both a day newer than the 2026-09-20 pass — reproduced this branch's `surface_snapshot.json` **byte for byte**, so no tracked surface moved in the interval. Re-verified Gate 0 at source rather than carrying it forward: `getRunHarnessUsage` carries `x-internal: true` (openapi.yaml:7226-7235) and `publishHarnessUsage` carries `x-internal: true` (openapi.yaml:10194-10205); `createScoringBackfill` (openapi.yaml:10922) is **not** `x-internal` but sits under `/factory`, which `sync_openapi.py:107` excludes wholesale via `EXCLUDED_PATH_PREFIXES`, and `developers/agent-api-openapi.yaml` still has zero `/factory` paths — so all three remain correctly mapped `-> internal`. Also swept the three documented blind spots the audit cannot see itself: the surface-scoped slash check across all 65 registry entries (33 GuiOnly, 18 TuiOnly, 14 GuiAndTui, none carrying a `feature_flag`) leaves only `/docker-sandbox` uncovered, still dogfood-gated by `LocalDockerSandbox` (`crates/warp_features/src/lib.rs:1064`, inside `DOGFOOD_FLAGS`); `CreateProvider` still has exactly three variants (`claude`, `codex`, `docker-registry`, `crates/warp_cli/src/secret.rs:66-75`), so the `Args`-struct extractor gap hides nothing new; and `--weak-coverage` returns 82, unchanged from 2026-09-14. Re-checked the five staleness term classes at their source lines and confirmed each is a false positive or style-only: `warp ai` → the historical FAQ heading `agents/getting-started/faqs.mdx:18`; `generate command` → the live "Generate commands as command-line input" heading on the "Generate (Legacy)" page; `ai command` → AI Command Search at `terminal/entry/index.mdx:11`; `ai credits` → the bucket name (still the unresolved style-policy question in the Notes, deliberately left for a human); `warp terminal` → permitted distinguishing usage, with `terminal/more-features/index.mdx:4` still the one genuine wording nit that SKILL.md assigns to `style_lint`. All three skill test suites pass (19 + 18 + release-gate), so no extractor has rotted. `npm ci && npm run build` passes on the merged branch (388 Markdown docs, 390 HTML files). `suggest_reviewers.py` resolves only `@warpdotdev/oss-maintainers` for `crates/warp_features/src/lib.rs`, with all three warp-server handler paths unowned, so the PR keeps no requested reviewer. No new feature PR, and no second bookkeeping PR. | +| n/a (2026-09-20 residual re-verification of v0.2026.09.16.08.27.stable_02) | 2026-09-20 | n/a | Not a verdict | Drift-watch re-entry after the release gate on `main` still reported this stable as new (bookkeeping PR #768 unmerged; `last_release_processed.json` already carries `v0.2026.09.16.08.27.stable_02` on the branch). Extended #768 rather than opening a second bookkeeping PR. Independently re-verified rather than carrying forward: both audit modes exited 0 with `audits_skipped: []` and an empty `unaccounted` bucket (297 flags, 91 CLI commands, 223 API routes, 65 slash commands, 232 settings). Against this branch, `surface_changes`, `changelog_review`, and `undocumented_api_endpoints` are all empty; only the 24 already-decided `potentially_stale_docs` rows remain. `--update-snapshot` against fresh `warp` (`master`, `c1a27a6a2`, 2026-09-20) and `warp-server` (`develop`, `2e3da2cf1`, 2026-09-20) reproduced this branch's `surface_snapshot.json` **byte for byte**. Re-confirmed Gate 0 for the three routes mapped on 2026-09-18: `GET /agent/runs/{runId}/harness-usage` still has `x-internal: true` (`getRunHarnessUsage`, openapi.yaml:7235); `POST /harness-support/usage` still has `x-internal: true` (`publishHarnessUsage`, openapi.yaml:10205); `POST /factory/scorers/{scorer_id}/backfill` remains under the unreleased `factory` tag (`createScoringBackfill`, openapi.yaml:10925) with zero `/factory` paths in `developers/agent-api-openapi.yaml`. `WindowsVideoRecording` still dogfood. All 13 changelog/`oz_updates` bullets and #15913 already carry ledger verdicts; feature PR docs#767 remains open with reviewer `dannyneira`. No new feature PR, and no second bookkeeping PR. | +| n/a (2026-09-19 residual re-verification of v0.2026.09.16.08.27.stable_02) | 2026-09-19 | n/a | Not a verdict | Drift-watch re-entry after the release gate on `main` still reported this stable as new (bookkeeping PR #768 unmerged; `last_release_processed.json` already carries `v0.2026.09.16.08.27.stable_02` on the branch). Extended #768 rather than opening a second bookkeeping PR. Independently re-verified rather than carrying forward: both audit modes exited 0 with `audits_skipped: []` and an empty `unaccounted` bucket (297 flags, 91 CLI commands, 223 API routes, 65 slash commands, 232 settings). Against this branch, `surface_changes`, `changelog_review`, and `undocumented_api_endpoints` are all empty; only the 24 already-decided `potentially_stale_docs` rows remain. `--update-snapshot` against fresh `warp` (`master`, `03832b3a8`, 2026-09-18) and `warp-server` (`develop`, `f3bb86d4d`, 2026-09-19) reproduced this branch's `surface_snapshot.json` **byte for byte**. Re-confirmed Gate 0 for the three routes mapped on 2026-09-18: `GET /agent/runs/{runId}/harness-usage` still has `x-internal: true` (`getRunHarnessUsage`, openapi.yaml:7235); `POST /harness-support/usage` still has `x-internal: true` (`publishHarnessUsage`, openapi.yaml:10205); `POST /factory/scorers/{scorer_id}/backfill` remains under the unreleased `factory` tag with zero `/factory` paths in `developers/agent-api-openapi.yaml`. `WindowsVideoRecording` still dogfood. All 13 changelog/`oz_updates` bullets and #15913 already carry ledger verdicts; feature PR docs#767 remains open with reviewer `dannyneira`. No new feature PR, and no second bookkeeping PR. | +| n/a (release v0.2026.09.16.08.27.stable_02) | 2026-09-18 | n/a | Not a verdict | Drift-watch processed stable `v0.2026.09.16.08.27.stable_02` (released 2026-09-16). Feature PR docs#767 documents private image credentials; this bookkeeping PR carries map, ledger, release marker, and snapshot. | +| [#15913](https://github.com/warpdotdev/warp/pull/15913) — `oz secret create docker-registry` | 2026-09-18 | yes | Gate 0 cleared; Gate 1 + Gate 2 | Previously deferred 2026-09-11 (not in stable). Now in `v0.2026.09.16.08.27.stable_02`. Knobs: `--host`, `--username`, `--password`, `--password-file` (`DockerRegistryCreateArgs`, `crates/warp_cli/src/secret.rs:190-217`); web type **Private image credential**. Gate 2: `--password` conflicts with `--password-file` and help text warns about shell history/`ps` leaks. Not env-injected (`TestGetSecretsForTask_ExcludesRegistryCredentialEvenWhenExplicitlyNamed`). Updated `platform/secrets.mdx`, `platform/runners.mdx`, `factories/factory-as-code.mdx` (feature PR docs#767). No CLI map entry for the provider subcommand — extractor blind spot (Args struct) recorded 2026-09-11. | +| [#15903](https://github.com/warpdotdev/warp/pull/15903) fzf/atuin handoff | 2026-09-18 | no | Already covered (ShellWidgetHandoff) | Changelog new-feature bullet for ctrl-r/ctrl-t fzf and atuin. Covered by 2026-09-11 ShellWidgetHandoff Gate 3 update on `command-search.mdx` (docs#734 merged). | +| [#15903](https://github.com/warpdotdev/warp/pull/15903) native shell completions | 2026-09-18 | no | Already covered (Gate 1) | Settings knobs `terminal.input.warp_completions_enabled` / `native_shell_completions_enabled` already documented in `all-settings.mdx`; NativeShellCompletions GA correction shipped docs#733. | +| [#15903](https://github.com/warpdotdev/warp/pull/15903) history ranking | 2026-09-18 | no | Already decided (HistorySearchRankingV2) | Same ranking weights verdicted no on 2026-09-11 as no user-observable change requiring action. | +| [#15879](https://github.com/warpdotdev/warp/pull/15879) Windows Materials backdrop | 2026-09-18 | no | Already covered (Gate 1) | `appearance.window.backdrop` documented in docs#733 / map entry 2026-09-12. Changelog is the stable ship note for that setting. | +| [#16006](https://github.com/warpdotdev/warp/pull/16006) | 2026-09-18 | no | Disqualified: bug fix / small and intuitive | Parallel clone error reporting lists only failed repos. Improves an existing failure message; no knob or workflow change. | +| [#15844](https://github.com/warpdotdev/warp/pull/15844) | 2026-09-18 | no | Disqualified: no user-observable change requiring action | Discover and cache build tools in nested repository directories. Agent/runtime cache behavior; no setting, CLI flag, or user workflow change. | +| [#15905](https://github.com/warpdotdev/warp/pull/15905) | 2026-09-18 | no | Disqualified: pure UI affordance / small and intuitive | Workspace admins remove members from team settings. In-product UI action; no settings-file key or non-obvious setup. | +| [#15880](https://github.com/warpdotdev/warp/pull/15880) | 2026-09-18 | no | Disqualified: small and intuitive | Native workspace members leave a team without losing workspace access. Membership UI behavior understood on sight. | +| [#15881](https://github.com/warpdotdev/warp/pull/15881) | 2026-09-18 | no | Disqualified: pure UI affordance / small and intuitive | Native workspace users browse and join another open team from Teams settings. Discoverable in-product. | +| [#15921](https://github.com/warpdotdev/warp/pull/15921) | 2026-09-18 | no | Disqualified: bug fix restoring intended behavior | Native Oz follow-up prompts no longer interrupt one another. Restores expected multi-follow-up delivery. | +| [#15863](https://github.com/warpdotdev/warp/pull/15863) | 2026-09-18 | no | Disqualified: bug fix restoring intended behavior | Preserved team-scoped credentials when launching orchestrated agent runs. Restores expected credential scope; secrets/orchestration docs already cover team secrets. | +| [#16046](https://github.com/warpdotdev/warp/pull/16046) | 2026-09-18 | no | Disqualified: bug fix restoring intended behavior | Follow-up messages with attachments delivered at the next steering opportunity instead of waiting for turn end. Restores intended steering behavior. | +| GET /agent/runs/{runId}/harness-usage | 2026-09-18 | deferred | Gate 0 | New route in agent_webhooks.go. Marked `x-internal: true` in warp-server `public_api/openapi.yaml`; absent from `developers/agent-api-openapi.yaml`. Mapped `-> internal`. Re-check if marker drops; route via sync-openapi-spec. | +| POST /harness-support/usage | 2026-09-18 | deferred | Gate 0 | publishHarnessUsage for third-party harness usage snapshots. Tag `harness-support`, `x-internal: true`; harness-support excluded from released docs OpenAPI. Mapped `-> internal`. | +| POST /factory/scorers/{scorer_id}/backfill | 2026-09-18 | deferred | Gate 0 | createScoringBackfill under factory tag. Released OpenAPI has zero `/factory` paths (same Factory REST exclusion). Mapped `-> internal`. Re-check when factory API is published. | +| WindowsVideoRecording (flag added, dogfood) | 2026-09-18 | deferred | Gate 0 | New dogfood-status feature flag. Not GA. Tracked_non_ga via snapshot; re-check on promotion. No ignore-list entry required for dogfood. | +| n/a (24 potentially_stale_docs, 2026-09-18 run) | 2026-09-18 | no | Already decided / owned by style_lint | Same term set as 2026-09-14/11 (`ai credits` bucket-name false positives, permitted Warp terminal distinguishing usage, historical Warp AI FAQ, live Generate / AI Command Search headings). No missing content. | | n/a (2026-09-16 exhaustive re-verification sweep) | 2026-09-16 | n/a | Not a verdict | A second exhaustive drift-watch pass over the same stable release, two days after the 2026-09-14 pass that opened this PR. Nothing new to decide: **no tracked surface changed in the interval.** Running `--update-snapshot` against fresh `warp` (`master`, `91dad6a70`) and `warp-server` (`develop`, `91b349221`) checkouts, both dated 2026-09-16, reproduced this branch's `surface_snapshot.json` **byte for byte** across 296 flags, 91 CLI commands, 220 API routes, 65 slash commands, 232 settings, 23 web routes, 72 server tools, and 17 bundled skills. Both audit modes exited 0 with `audits_skipped: []` and an empty `unaccounted` bucket. Against `main` the run reproduced the 2026-09-14 findings exactly — one `undocumented_api_endpoints` entry, one `surface_changes` entry, both `GET /networking/egress-ranges`, plus the 24 staleness rows; with this branch's map entry applied, the first two drop to 0 and only the already-decided staleness rows remain. Independently re-verified the load-bearing evidence rather than carrying it forward: the `networking` tag and the `getEgressRanges` operation both still carry `x-internal: true` in warp-server `public_api/openapi.yaml` (lines 31-33 and 42-43), and five staleness term classes were re-checked at their source lines (`warp ai` → the historical FAQ heading; `generate command` → the live "Generate commands as command-line input" heading; `ai command` → AI Command Search; `ai credits` → the bucket name; `warp terminal` → the permitted distinguishing usage). The skill's three test suites pass (19 + 18 + release-gate tests), so no extractor has rotted. `npm ci && npm run build` passes on this branch at 386 Markdown docs and 388 HTML files. `suggest_reviewers.py` again resolves only the `@warpdotdev/fa-warp-3` team, with `router/handlers/public_api/networking.go` unowned, so the PR keeps no requested reviewer. No feature PR, and no second bookkeeping PR — this branch was extended per the skill's one-open-bookkeeping-PR rule. | | GET /networking/egress-ranges | 2026-09-14 | deferred | Gate 0 | Returns the canonical outbound IP ranges for Warp-hosted agents, scoped to the authenticated principal's active team (`RegisterNetworkingRoutes` / `EgressRangesHandler`, `router/handlers/public_api/networking.go:17-77`, behind `middleware.EnforceAuth()`). The only new surface this run — it is both the sole `undocumented_api_endpoints` finding and the sole `surface_changes` entry. Gate 0 fails twice over in warp-server's canonical `public_api/openapi.yaml`: the `networking` tag carries `x-internal: true` and so does the `getEgressRanges` operation, and `sync_openapi.py` drops `x-internal` operations wholesale, so the route cannot reach `developers/agent-api-openapi.yaml` while the markers stand (that file has zero `networking` paths and zero `x-internal` entries today). It backs the Admin Panel's hosted-agent egress CIDR list (`client/src/components/admin/team/platform/HostedAgentEgressCIDRs.tsx`), not the released public Agent API. Not a content gap either: the ranges themselves are already published on `platform/warp-hosting.mdx` under "Networking". Mapped `-> internal`. Re-check if the `x-internal` markers come off, and route it through sync-openapi-spec rather than hand-drafting. | | n/a (hardcoded egress CIDR list on platform/warp-hosting.mdx) | 2026-09-14 | no | Not a docs gap / noted for the owner | Surfaced while triaging the route above, recorded so it is not silently dropped. `platform/warp-hosting.mdx` publishes the hosted-agent egress ranges as a hardcoded bullet list, and warp-server now computes the same set server-side (`logic/ai/ambient_agents/networking/egress_ranges.go`). The page can therefore drift from the canonical source with nothing to catch it. No docs change is available: the endpoint is `x-internal`, so the page cannot point readers at it, and the current list is not known to be wrong. Flagging the durability question for the docs owner rather than editing correct content. | @@ -42,7 +111,7 @@ Newest first. One row per PR number — usually a `warpdotdev/warp` changelog it | GET /factory/{uid}/setup-progress, POST /factory/{uid}/setup-progress/dismiss | 2026-09-12 | deferred | Gate 0 | Both marked `x-internal: true` in warp-server `public_api/openapi.yaml` (`getFactorySetupProgress`, dismiss counterpart) inside the unreleased `/factory` namespace. Released `developers/agent-api-openapi.yaml` has zero `/factory` paths. Missed in the 2026-09-11 map pass that covered sibling factory routes; mapped both `-> internal` on this bookkeeping extension. Re-check when the factory API is published. | | appearance.window.backdrop (map residual) | 2026-09-12 | yes | Gate 1 (map only) | Setting already verdicted yes on 2026-09-11 with feature PR docs#733, but the surface-map entry was never added so coverage kept flagging it. Mapped `appearance.window.backdrop -> terminal/settings/all-settings.mdx` on this extension. | | n/a (third residual sweep of v0.2026.09.09.08.26.stable_02, 2026-09-12) | 2026-09-12 | n/a | Not a verdict | Drift-watch re-entry after the release gate on `main` still reported this stable as new (bookkeeping PR #736 unmerged). Checked out and extended #736 rather than opening a second bookkeeping PR. Independently re-verified Gate 0 for the two remaining unmapped factory routes above; re-confirmed #15913 docker-registry flags still deferred (Gate 0, not in any stable); re-confirmed the 15 changelog/`oz_updates` bullets and three flag promotions already carry ledger verdicts; `potentially_stale_docs` (24) still style_lint-owned. Feature PRs docs#733, docs#734, docs#735 remain open with reviewer `dannyneira`. Regenerated `surface_snapshot.json` so setup-progress leaves the `--diff` added bucket; #15913 flags enter the baseline and rely on the deferred ledger row plus the next stable changelog for re-surface. No new feature PR. | -| [#15913](https://github.com/warpdotdev/warp/pull/15913) — `oz secret create docker-registry` (`--host`, `--username`, `--password`, `--password-file`) | 2026-09-11 | deferred | Gate 0 | New `docker-registry` provider subcommand on `oz secret create` that stores a container registry credential (`CreateProvider::DockerRegistry` / `DockerRegistryCreateArgs`, `crates/warp_cli/src/secret.rs:72-74` and `190-217`). The four flags are real Gate 1 knobs, and `--password` declares `conflicts_with = "password_file"` with help text recommending `--password-file` for scripted use because a password on the command line leaks through shell history and `ps` — that would also carry Gate 2. Gate 0 stops both: the commit landed on warp `master` at `7bfa9da6b`, 2026-09-11 16:47 UTC, two days after the `v0.2026.09.09.08.26.stable_02` cut (2026-09-09 08:26 UTC), so it is in no stable release and absent from the 2026.09.09 changelog. `surface_snapshot.json` was deliberately **not** regenerated on this branch, so the four flags stay out of the baseline and `--diff` re-fires them on the first run after they ship. Re-check when a stable release contains #15913; target pages are `platform/secrets.mdx` and the `oz secret create` entry in `reference/cli/index.mdx`. | +| [#15913](https://github.com/warpdotdev/warp/pull/15913) — `oz secret create docker-registry` (`--host`, `--username`, `--password`, `--password-file`) | 2026-09-11 | yes (see 2026-09-18) | Gate 0 cleared on ship | Superseded by the 2026-09-18 yes row when `v0.2026.09.16.08.27.stable_02` shipped. Feature PR docs#767. | | n/a (second exhaustive sweep of v0.2026.09.09.08.26.stable_02, 2026-09-11 17:00Z) | 2026-09-11 | n/a | Not a verdict | A second drift-watch pass over the same release, an hour after the 16:08Z pass that produced this PR and feature PRs docs#733, docs#734, and docs#735. Both audit modes exited 0 with no `audits_skipped` and an empty `unaccounted` bucket (296 flags, 91 CLI commands, 217 API routes, 65 slash commands, 232 settings). Independently re-verified the load-bearing Gate 0 evidence for all eight `undocumented_api_endpoints`: every one carries `x-internal: true` in `warp-server/public_api/openapi.yaml`, and `developers/agent-api-openapi.yaml` still has zero `/factory` or `/factory-inbox` paths. Re-confirmed zero findings in `undocumented_features`, `undocumented_cli_commands`, `undocumented_slash_commands`, `map_hygiene`, `stale_doc_references`, and `unlisted_pages`. The only item without a verdict was #15913 above, which the earlier pass could not see because its checkout predated the commit. `npm run build` passes on `main` with docs#733, docs#734, and docs#735 cherry-picked together (385 Markdown docs, 387 HTML files). No new feature PR. | | appearance.window.backdrop | 2026-09-11 | yes | Gate 1 | Always-on Windows setting `appearance.window.backdrop` (`WindowBackdrop` in `app/src/window_settings.rs:19-28`, default `None`, options `none`/`mica`/`acrylic`/`mica_alt`; UI **Window backdrop** on **Settings** > **Appearance** > **Window**). Replaces the deprecated binary `override_blur_texture` Acrylic toggle. Documented in `all-settings.mdx` and updated `size-opacity-blurring.mdx` (feature PR). | | NativeShellCompletions (flag preview→ga) | 2026-09-11 | yes | Gate 1 (factual correction) | Flag now a default cargo feature (`app/Cargo.toml` default features include `native_shell_completions`) and no longer in `PREVIEW_FLAGS`. Documentable knobs remain `terminal.input.warp_completions_enabled` and `terminal.input.native_shell_completions_enabled` already in `all-settings.mdx`; removed the stale "Native shell completions Preview" availability gate from both rows (feature PR). Flag stays on the ignore list as a sub-feature toggle. | diff --git a/.agents/skills/missing_docs/references/feature_surface_map.md b/.agents/skills/missing_docs/references/feature_surface_map.md index 8cb974a0d..32f7eceda 100644 --- a/.agents/skills/missing_docs/references/feature_surface_map.md +++ b/.agents/skills/missing_docs/references/feature_surface_map.md @@ -165,6 +165,14 @@ SshRemoteServer -> src/content/docs/terminal/warpify/ssh.mdx # a flat computer-use.mdx into a computer-use/ directory). VideoRecording -> src/content/docs/agents/capabilities/computer-use/testing-and-recordings.mdx BackgroundComputerUse -> src/content/docs/agents/capabilities/computer-use/index.mdx +# Windows platform gate for the same recording surface: video_recording_enabled() +# is `VideoRecording && (!cfg!(windows) || WindowsVideoRecording)` +# (app/src/ai/blocklist/action_model/recording_controller.rs:21-24). Promoted +# dogfood -> GA (RELEASE_FLAGS) after being deferred on Gate 0 on 2026-09-25. It +# widens platform availability rather than adding a surface: no setting, CLI +# flag, or API field, and no page ever claimed recording excluded Windows. Maps +# to the recording page it gates, which needs no edit. +WindowsVideoRecording -> src/content/docs/agents/capabilities/computer-use/testing-and-recordings.mdx # Feature flags whose only user-facing surface is a documented setting in the # all-settings reference (terminal/settings/all-settings.mdx). @@ -214,6 +222,12 @@ SoloUserByok -> src/content/docs/agents/inference/bring-your-own-api-key.mdx # the feature remains documented at inference/custom-inference-endpoint.mdx. # Connect a SuperGrok subscription instead of pasting an xAI API key. SuperGrok -> src/content/docs/agents/inference/bring-your-own-api-key.mdx +# Sign in with ChatGPT: connect an OpenAI ChatGPT plan so OpenAI models run on +# that plan instead of Warp credits. GA (chatgpt_subscription is a default cargo +# feature in app/Cargo.toml). Documented on its own page alongside the SuperGrok +# equivalent. Deferred 2026-09-30 as unverifiable; the implementation landed in +# the public repo and the deferral cleared 2026-10-02. +ChatGPTSubscription -> src/content/docs/agents/inference/chatgpt-subscription.mdx # Custom model routers (Settings > AI > Custom Routers) surface in the model picker. CustomModelRouters -> src/content/docs/agents/inference/model-choice.mdx @@ -247,9 +261,11 @@ OscHyperlinks -> src/content/docs/terminal/more-features/files-and-links.mdx # MCP reference (and the cloud agent MCP schema page). WellKnownMcpIds -> src/content/docs/reference/cli/mcp-servers.mdx -# When the shell rebinds Ctrl+R / Ctrl+T to fzf, atuin, or fzf.fish, hand those -# keypresses off to the shell widget instead of Warp's Command Search. Promoted -# preview -> GA; behavior documented on the Command Search page. +# When the shell rebinds Ctrl+R / Ctrl+T / Alt-C to fzf, atuin, or fzf.fish, hand +# those keypresses off to the shell widget instead of Warp's Command Search. +# Promoted preview -> GA; behavior documented on the Command Search page. The +# Alt-C directory-search handoff (warp#16094) is fzf-only and runs through the +# editable workspace:trigger_external_alt_c_directory_search binding. ShellWidgetHandoff -> src/content/docs/terminal/entry/command-search.mdx ## CLI commands -> doc pages @@ -407,6 +423,13 @@ POST /harness-support/finish-task -> internal POST /harness-support/report-shutdown -> internal POST /harness-support/upload-snapshot -> internal POST /harness-support/commit-snapshot -> internal +# Cumulative Claude Code / Codex usage snapshot for the current cloud execution +# (publishHarnessUsage). Marked `x-internal: true` upstream; harness-support tag +# is excluded from the released docs OpenAPI copy. +POST /harness-support/usage -> internal +# Read harness usage for a run (getHarnessUsage / agent_webhooks.go). Marked +# `x-internal: true` upstream; not in developers/agent-api-openapi.yaml. +GET /agent/runs/{runId}/harness-usage -> internal # Oz Factory REST API (router/handlers/public_api/factory*.go). Warp Factories # is now documented publicly (src/content/docs/factories/) as an Early Access @@ -427,10 +450,22 @@ GET /factory/access -> internal GET /factory-inbox -> internal POST /factory-inbox/notifications/dismiss -> internal POST /factory-inbox/notifications/restore -> internal +# Bulk mark-read / mark-unread for personal factory inbox notifications +# (markFactoryInboxNotificationsRead / markFactoryInboxNotificationsUnread). +# Same unreleased `/factory-inbox` namespace; factory tag is `x-internal: true` +# and released OpenAPI has zero `/factory-inbox` paths. +POST /factory-inbox/notifications/read -> internal +POST /factory-inbox/notifications/unread -> internal # Resolve one inbox notification to its owning factory for deep-link routing # (getFactoryInboxNotification). Same unreleased `/factory-inbox` namespace; # marked `x-internal: true` upstream. GET /factory-inbox/notifications/{uid} -> internal +# Answer all questions on a current inbox notification with one root-run +# follow-up (answerFactoryQuestions / AnswerFactoryQuestionsHandler, +# factory_inbox.go). Same unreleased `/factory-inbox` namespace; operation +# carries `x-internal: true` upstream; released OpenAPI has zero +# `/factory-inbox` paths. +POST /factory-inbox/notifications/{uid}/answers -> internal GET /factory-alias/{alias} -> internal POST /factory -> internal POST /factory/avatar -> internal @@ -524,6 +559,12 @@ PUT /factory/{uid}/integrations/linear/teams/{team_id}/labels -> internal GET /factory/{uid}/integrations/jira/projects -> internal GET /factory/{uid}/integrations/jira/labels -> internal GET /factory/{uid}/integrations/jira/statuses -> internal +# Assignable-user search across the factory's in-scope Jira projects, via the +# workspace Jira Forge installation (listFactoryJiraAssignees, +# ListFactoryJiraAssigneesHandler in factories.go:112). Marked `x-internal: true` +# under the factory tag; released OpenAPI has zero `/factory` paths. Same +# unreleased namespace as the sibling Jira pickers above. +GET /factory/{uid}/integrations/jira/assignees -> internal GET /factory/{uid}/integration-activations -> internal GET /factory/{uid}/integration-destinations -> internal GET /factory/{uid}/gitlab-automation-capability -> internal @@ -531,6 +572,9 @@ POST /factory/{uid}/gitlab-automation-capability/refresh -> internal # Integration pickers used during factory setup, before a factory exists. GET /factory-setup/integrations/jira/projects -> internal GET /factory-setup/integrations/linear/teams -> internal +# POST /factory-setup/azure-devops-creation-requests was removed from +# warp-server (SubmitAzureDevOpsCreationRequestHandler is gone), so its map +# entry was pruned 2026-10-02. It never reached the released OpenAPI spec. GET /factory/automations -> internal POST /factory/automations -> internal GET /factory/automations/events/{provider} -> internal @@ -548,6 +592,9 @@ DELETE /factory/scorers/{scorer_id} -> internal GET /factory/scorers/{scorer_id}/results -> internal GET /factory/scorers/{scorer_id}/results/reasons -> internal GET /factory/scorers/{scorer_id}/metrics/pass-rate -> internal +# Date-bounded scoring backfill (createScoringBackfill). Factory tag; released +# OpenAPI has zero /factory paths. Stays internal until the Factory API ships. +POST /factory/scorers/{scorer_id}/backfill -> internal # The scorer pause/resume routes and the autofix-config trio were replaced by # the self-improvement-config routes below; their dead map entries were pruned. GET /factory/scorers/{scorer_id}/self-improvement-config -> internal @@ -570,6 +617,12 @@ GET /factory/{uid}/integrations/linear/users -> internal GET /factory/{uid}/integrations/linear/workflow-states -> internal GET /factory/{uid}/integrations/slack/conversations -> internal GET /factory/{uid}/integrations/slack/users -> internal +# Microsoft Teams team/channel pickers for factory automations UI +# (listFactoryMicrosoftTeamsTeams / listFactoryMicrosoftTeamsChannels). +# Both marked `x-internal: true` under the factory tag; released OpenAPI has +# zero `/factory` paths. Same unreleased namespace as sibling integration routes. +GET /factory/{uid}/integrations/microsoft-teams/teams -> internal +GET /factory/{uid}/integrations/microsoft-teams/teams/{team_id}/channels -> internal # Issue-tracker issue picker and Slack connection-test greeting used by the # factory integrations UI. Same unreleased `/factory` namespace as siblings above. GET /factory/{uid}/integrations/issue-tracker/issues -> internal @@ -596,6 +649,10 @@ GET /factory/{uid}/benchmarks/runs -> internal GET /factory/{uid}/benchmarks/runs/{run_uid} -> internal GET /factory/{uid}/benchmarks/runs/{run_uid}/results -> internal POST /factory/{uid}/benchmarks/runs/{run_uid}/cancel -> internal +# Rescore missing results on a completed benchmark run (rescoreBenchmarkRun). +# Marked `x-internal: true` under the factory tag; released OpenAPI has zero +# `/factory` paths. +POST /factory/{uid}/benchmarks/runs/{run_uid}/rescore -> internal # Conversation steering and history routes marked `x-internal: true` upstream # (agent_conversation_steering.go, conversation_replay_history.go, agent_webhooks.go, @@ -901,16 +958,10 @@ TerminalLifecycleRecovery # the CLI agent session if the plugin never reports the interrupt. No setting, # menu, or CLI flag; Ctrl-C behavior is already documented. CtrlCCancelsThirdPartyHarness -# Orchestration plumbing promoted dogfood -> GA. Neither changes what a user sees -# or configures, so both are internal implementation details of the documented -# multi-agent orchestration feature (platform/orchestration/multi-agent-runs.mdx): -# - WaitForEventsParentRegistration: on `wait_for_events`, confirms parent status -# with the server and registers an orchestrator for the ancestor event stream so -# children created out-of-band (CLI/API) still deliver events. -# - OrchestrationUnifiedStack: consolidates child-state tracking behind a single -# tracker, one ancestor SSE per parent family, and one remote-child placeholder. -WaitForEventsParentRegistration -OrchestrationUnifiedStack +# WaitForEventsParentRegistration and OrchestrationUnifiedStack were GA +# orchestration-plumbing flags with no user-facing surface; both were removed +# from code (flag cleanup) and their ignore-list entries pruned 2026-09-23. +# Orchestration behavior remains documented at platform/orchestration/multi-agent-runs.mdx. # Internal persistence-backend detail: gates storing execution profiles in a # file-backed settings collection (agents.execution_profiles) versus the legacy # per-profile Warp Drive cloud objects. It changes where profiles are stored, not diff --git a/.agents/skills/missing_docs/references/last_release_processed.json b/.agents/skills/missing_docs/references/last_release_processed.json index f57782cce..038b1a927 100644 --- a/.agents/skills/missing_docs/references/last_release_processed.json +++ b/.agents/skills/missing_docs/references/last_release_processed.json @@ -1,8 +1,8 @@ { - "last_processed_version": "v0.2026.09.09.08.26.stable_02", - "release_date": "2026-09-09T08:26:00+00:00", - "processed_at": "2026-09-11T16:08:30Z", - "changelog_entry_count": 21, - "oz_updates_count": 9, + "last_processed_version": "v0.2026.09.30.08.29.stable_01", + "release_date": "2026-09-30T08:29:00+00:00", + "processed_at": "2026-10-02T17:11:19Z", + "changelog_entry_count": 12, + "oz_updates_count": 0, "_comment": "Written by check_new_release.py --commit after a drift-watch run completes triage. Kept separate from surface_snapshot.json, which is regenerated wholesale and would lose this marker. Do not hand-edit; to force a re-run of the current release, delete this file." } diff --git a/.agents/skills/missing_docs/references/surface_snapshot.json b/.agents/skills/missing_docs/references/surface_snapshot.json index 79266fc97..936640ccc 100644 --- a/.agents/skills/missing_docs/references/surface_snapshot.json +++ b/.agents/skills/missing_docs/references/surface_snapshot.json @@ -56,6 +56,7 @@ "BundledSkills": "ga", "CLIAgentRichInput": "ga", "Changelog": "ga", + "ChatGPTSubscription": "ga", "ClassicCompletions": "ga", "ClearAutosuggestionOnEscape": "ga", "CloudAgentRunners": "ga", @@ -196,7 +197,6 @@ "OpenCodeNotifications": "ga", "OpenWarpLaunchModal": "ga", "OrchestrationLaunchModal": "ga", - "OrchestrationUnifiedStack": "ga", "OscHyperlinks": "ga", "OzChangelogUpdates": "ga", "OzHandoff": "ga", @@ -284,7 +284,6 @@ "VideoRecording": "ga", "ViewingSharedSessions": "ga", "VimCodeEditor": "ga", - "WaitForEventsParentRegistration": "ga", "WarpControlCli": "dogfood", "WarpManagedSecrets": "ga", "WarpPacks": "ga", @@ -295,6 +294,7 @@ "WelcomeBlock": "other", "WelcomeTips": "other", "WellKnownMcpIds": "ga", + "WindowsVideoRecording": "ga", "WithSandboxTelemetry": "other", "WorkflowAliases": "ga" }, @@ -724,6 +724,7 @@ "--run-id" ], "environment": [ + "--default-runner", "--description", "--docker-image", "--environment", @@ -864,6 +865,7 @@ "GET /api/v1/agent/runs", "GET /api/v1/agent/runs/{runId}", "GET /api/v1/agent/runs/{runId}/handoff/attachments", + "GET /api/v1/agent/runs/{runId}/harness-usage", "GET /api/v1/agent/runs/{runId}/timeline", "GET /api/v1/agent/runs/{runId}/trace", "GET /api/v1/agent/runs/{runId}/transcript", @@ -914,6 +916,7 @@ "GET /api/v1/factory/{uid}/integrations/github/users", "GET /api/v1/factory/{uid}/integrations/github/workflows", "GET /api/v1/factory/{uid}/integrations/issue-tracker/issues", + "GET /api/v1/factory/{uid}/integrations/jira/assignees", "GET /api/v1/factory/{uid}/integrations/jira/labels", "GET /api/v1/factory/{uid}/integrations/jira/projects", "GET /api/v1/factory/{uid}/integrations/jira/statuses", @@ -924,6 +927,8 @@ "GET /api/v1/factory/{uid}/integrations/linear/teams/{team_id}/labels", "GET /api/v1/factory/{uid}/integrations/linear/users", "GET /api/v1/factory/{uid}/integrations/linear/workflow-states", + "GET /api/v1/factory/{uid}/integrations/microsoft-teams/teams", + "GET /api/v1/factory/{uid}/integrations/microsoft-teams/teams/{team_id}/channels", "GET /api/v1/factory/{uid}/integrations/slack/conversations", "GET /api/v1/factory/{uid}/integrations/slack/users", "GET /api/v1/factory/{uid}/merges/{merge_uid}", @@ -984,17 +989,22 @@ "POST /api/v1/factory", "POST /api/v1/factory-files/validate", "POST /api/v1/factory-inbox/notifications/dismiss", + "POST /api/v1/factory-inbox/notifications/read", "POST /api/v1/factory-inbox/notifications/restore", + "POST /api/v1/factory-inbox/notifications/unread", + "POST /api/v1/factory-inbox/notifications/{uid}/answers", "POST /api/v1/factory/automations", "POST /api/v1/factory/automations/{id}/run", "POST /api/v1/factory/avatar", "POST /api/v1/factory/run-scoring/dispatches", "POST /api/v1/factory/scorers", + "POST /api/v1/factory/scorers/{scorer_id}/backfill", "POST /api/v1/factory/webhooks", "POST /api/v1/factory/webhooks/dry-run", "POST /api/v1/factory/webhooks/{uid}/rotate", "POST /api/v1/factory/{uid}/apply", "POST /api/v1/factory/{uid}/benchmarks/runs/{run_uid}/cancel", + "POST /api/v1/factory/{uid}/benchmarks/runs/{run_uid}/rescore", "POST /api/v1/factory/{uid}/benchmarks/suites", "POST /api/v1/factory/{uid}/benchmarks/suites/{suite_uid}/runs", "POST /api/v1/factory/{uid}/benchmarks/suites/{suite_uid}/tasks", @@ -1025,6 +1035,7 @@ "POST /api/v1/harness-support/resolve-prompt", "POST /api/v1/harness-support/transcript", "POST /api/v1/harness-support/upload-snapshot", + "POST /api/v1/harness-support/usage", "POST /api/v1/memory_stores", "POST /api/v1/memory_stores/{uid}/memories", "POST /api/v1/oauth/consent", @@ -1422,6 +1433,7 @@ "report_outcome", "report_pr", "report_screenshot", + "report_self_improvement_metadata", "request_computer_use", "research", "ripgrep", @@ -1465,5 +1477,5 @@ "verify-ui-change-in-cloud": "dogfood", "warpctrl": "bundled" }, - "changelog_last_version": "2026.09.09" + "changelog_last_version": "2026.09.30" }