Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
f6f780f
task: add 2026-09-30 weekly queue reconciliation
raphaeltm Sep 30, 2026
42d25ac
chore(tasks): archive 14 shipped active task files with evidence
raphaeltm Sep 30, 2026
33c78fb
chore(tasks): narrow trustworthy-task-status, refresh ProjectData eme…
raphaeltm Sep 30, 2026
e320098
chore(tasks): repoint task citations at their archived paths
raphaeltm Sep 30, 2026
af19d5c
chore(tasks): fold non-standard completed/ directories into tasks/arc…
raphaeltm Sep 30, 2026
17c5f8b
chore(tasks): archive 21 backlog entries that shipped or were superse…
raphaeltm Sep 30, 2026
7eb11fe
chore(tasks): list every SAM Idea already at the 64 KiB content cap
raphaeltm Sep 30, 2026
afbfaff
chore(tasks): narrow partially shipped backlog entries with evidence …
raphaeltm Sep 30, 2026
b045373
chore(tasks): narrow batch-07 backlog entries and consolidate the Pla…
raphaeltm Sep 30, 2026
e2a8c9a
chore(tasks): narrow batch-02 and batch-04 backlog entries and consol…
raphaeltm Sep 30, 2026
d806423
chore(tasks): delete 67 backlog entries verified shipped, obsolete, s…
raphaeltm Sep 30, 2026
f0bf8e3
chore(tasks): timestamp the live archive-publish counter in the Proje…
raphaeltm Sep 30, 2026
a1724ef
chore(tasks): remove five shipped batch-06 backlog entries
raphaeltm Sep 30, 2026
e09eb4b
chore(tasks): narrow batch-06 backlog entries with evidence
raphaeltm Sep 30, 2026
acb1ee6
chore(tasks): point the archived port-offset task at where its residu…
raphaeltm Sep 30, 2026
92b7d88
chore(tasks): record the 2026-09-30 reconciliation ledger and archive it
raphaeltm Sep 30, 2026
f2b9d48
chore(tasks): cite absorbed backlog files by name, not by a path that…
raphaeltm Sep 30, 2026
7973ff6
chore(tasks): fix the ledger's verdict tally (62 shipped, one row) an…
raphaeltm Sep 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/cloud-init/tests/generate.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -557,7 +557,7 @@ describe('slice CPU shares', () => {
// Memory already had a reservation for the vm-agent because starvation there
// KILLS it. CPU had none, so a workspace saturating the box could delay the
// heartbeat until the control plane declared the node dead — the failure mode
// recorded in tasks/backlog/2026-08-25-build-concurrency-backpressure.md.
// recorded in tasks/archive/2026-08-25-build-concurrency-backpressure.md.
function sliceDirectives(path: string, overrides?: Partial<CloudInitVariables>): string {
return getWriteFile(path, overrides).content;
}
Expand Down
2 changes: 1 addition & 1 deletion packages/shared/src/constants/scaling.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ export const MAX_WARM_NODE_TIMEOUT_MS = 4 * 60 * 60 * 1000; // 4 hours
* ceiling is the only backstop against real usage exceeding declared usage.
* - Sustained CPU saturation is not purely a slowdown on this platform: it has
* previously starved the vm-agent heartbeat loop and produced false
* `node_not_live` task failures (`tasks/backlog/2026-08-25-build-concurrency-backpressure.md`).
* `node_not_live` task failures (`tasks/archive/2026-08-25-build-concurrency-backpressure.md`).
* That incident's own mitigation — a per-node build queue — covers concurrent
* devcontainer builds but not steady-state contention between running
* workspaces, so admission keeps a real margin.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -606,3 +606,40 @@ Current live threads that will actually move this number (do not duplicate them

Close this task when production `sql.databaseSize` is measured at or below 9 GB and the
observation window in the acceptance criteria above has been recorded.

## Reconciliation — 2026-09-30 (weekly queue audit)

**Verdict: stays active.** The headline criterion is further from met than a week ago, and the
drain that was supposed to move it has been stopped since 2026-09-27.

Measured 2026-09-30 (read-only production D1):

- `project_data_storage_telemetry` for `01KHRJGANBBWGDY1NZ0KVF0D4J`: **10,297,155,584 bytes**
(usage ratio 1.0297, status `degraded`) at 05:34Z. That is up from 10,103,668,736 at the
2026-09-23 audit and 10,124 MB on the morning of 2026-09-29.
- `project_data_archive_circuit_breakers`: SAM's breaker is **`open`** with reason
`attempts_exhausted:CompactArchiveTimeoutError`, opened 2026-09-27 16:47:58Z and never closed.
The last SAM archive publish was 2026-09-27 14:08:35Z. Other projects had published 172
archives since the breaker opened (as of about 05:40Z), so the sweep itself is healthy.
- SAM archive migrations: 322 `published`, 23 `frozen`, 3 `failed` (`156046f1`, `5ed87b67`,
`ff721a49`, all 2026-09-27) and 2 `poisoned` (`6d6f3099` since 2026-09-15, and `5f82299c`, the
one that opened the breaker).

What changed since the last audit:

- Slice B, exhaustive archive search: PR #2136, merged 2026-09-27.
- Abandon-migration control in Admin → Storage: PR #2140, merged 2026-09-24.
- Drain tripled (18-minute sweep cadence, 2.4M daily write budget): PR #2161, merged 2026-09-27
05:12Z. Its own 48-hour rollback trigger includes "the breaker opening"; the breaker opened
eleven hours later and the trigger was never acted on.
- Slice C (bounded root history indexing): no PR yet. Its code already exists as commit
`7868bc894` ("fix(search): complete bounded root history indexing", 2026-09-22) on the unmerged
parent branch `sam/implement-reliable-projectdata-archiving-tc49jm`, the same branch Slices A and
B were carved from. The plan lives in idea `01M0YZNBKSKQZ47NC0K7M8N5AX`.

Next actions, in order. These are human-gated production operations, not code:

1. Decide on the #2161 rollback trigger (revert the interval to 3600000, or keep 18 minutes).
2. Abandon or retry the failed/poisoned migrations first. Closing the breaker while `156046f1`,
`5ed87b67` and `ff721a49` are still failed risks re-poisoning it at once.
3. Close SAM's breaker from Admin → Storage (phone-usable, PR #2135).
Original file line number Diff line number Diff line change
Expand Up @@ -317,3 +317,7 @@ If implementing hybrid approach, need clear precedence:
- [ ] Configuration is persistent across workspace restarts
- [ ] Clear documentation for adding custom MCP servers
- [ ] (Optional) Visual UI for managing MCP servers without editing JSON

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as superseded (not built as written). Evidence: Shipped as BYO MCP servers (#1892, #2186; mcp_connections schema.ts:2069; SettingsMcpServers.tsx); survivor tasks/archive/2026-08-23-byo-mcp-servers.md; file already bannered "SUPERSEDED, do not execute"._
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,7 @@ A `time.Sleep(50*time.Millisecond)` before attaching the replay viewer. Simple b
- [ ] No `time.Sleep` used as the fix (Options A or B preferred)
- [ ] Other replay-related tests still pass
- [ ] Run with `-race` flag to verify no data races

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as superseded (not built as written). Evidence: Survivor tasks/backlog/2026-07-04-fix-flaky-tests-at-root.md (item 3 says this file's root cause is wrong)._
Original file line number Diff line number Diff line change
Expand Up @@ -183,3 +183,7 @@ The project header row (project name, repo link, Status/Settings buttons) needs
- [ ] Hamburger menu on the right side, matching drawer direction
- [ ] Chat panel fills available vertical space without page-level scroll conflicts
- [ ] All desktop layouts unaffected

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as shipped. Evidence: #220: AppShell mobile header, MobileSessionDrawer, full-bleed chat._
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,7 @@ Unify the project chat message flow through the DO as the single source of truth
- [ ] `useProjectAgentSession` removed from project chat (kept for workspace chat)
- [ ] No "Agent offline" banner in project chat
- [ ] Message history fully preserved when switching between conversations

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as superseded (not built as written). Evidence: #978 / tasks/archive/2026-05-12-do-only-chat-typewriter.md: all chat through the DO with typewriter rendering._
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,7 @@ Design document at `docs/design/quick-chat-mode.md` exploring five approaches:
## Status

Complete — design document written at `docs/design/quick-chat-mode.md`.

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as shipped. Evidence: Design-only task, all 5 criteria checked; approaches since built (sam-session DO, project-agent, Instant sessions)._
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,4 @@ The VM agent sends Bearer JWT tokens for callbacks, but `requireAuth()` expects
- `apps/api/src/routes/workspaces/lifecycle.ts:189-306` — callback-auth routes
- `apps/api/src/routes/workspaces/runtime.ts` — more callback-auth routes
- `apps/api/src/middleware/auth.ts:44` — "Authentication required" error source
- `tasks/backlog/2026-03-12-provisioning-failed-callback-401.md` — initial bug report
- `tasks/archive/2026-03-12-provisioning-failed-callback-401.md` — initial bug report
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,7 @@ Observed during production verification of the same-zone routing fix. The route
- `docs/notes/2026-03-12-same-zone-routing-postmortem.md`
- `apps/api/src/routes/workspaces.ts` — provisioning-failed handler
- `apps/api/src/durable-objects/task-runner.ts` — alarm-based state machine

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as shipped. Evidence: #325 (9c7875b8c) same-day fix; route uses callback JWT only (lifecycle.ts:580-583); tests workspace-callback-auth-routing.test.ts:157,202._
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,7 @@ Monitor the [mistral-vibe releases](https://github.com/mistralai/mistral-vibe/re
- [Mistral Vibe GitHub](https://github.com/mistralai/mistral-vibe)
- [DeepWiki Config Reference](https://deepwiki.com/mistralai/mistral-vibe/8.1-configuration-reference)
- [Reverse-engineered config.toml guide](https://gist.github.com/chris-hatton/6e1a62be8412473633f7ef02d067547d)

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as shipped. Evidence: #386 (c3a190e7d): ACP ClientInfo + VIBE_CLIENT_* (gateway.go:1136-1142) and generated ~/.vibe/config.toml aliases (vibe_config.go:45-143)._
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,6 @@ The lightweight workspace profile feature (`WorkspaceProfile = 'full' | 'lightwe
## References

- Design doc: `docs/design/quick-chat-mode.md`
- Prior task: `tasks/backlog/2026-03-09-quick-chat-mode-design.md`
- Prior task: `tasks/archive/2026-03-09-quick-chat-mode-design.md`
- VM agent contract: `packages/shared/src/vm-agent-contract.ts`
- Rule 10 (e2e verification): `.claude/rules/10-e2e-verification.md`
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,5 @@ Additionally, a pre-existing test (`TestGetAgentExtraEnvVars_MistralVibe`) expec

- `packages/vm-agent/internal/acp/gateway.go` — model env var mapping, config generation
- `packages/vm-agent/internal/acp/session_host.go` — agent startup flow
- `tasks/backlog/2026-03-14-fix-mistral-vibe-acp-metadata.md` — related metadata fix task
- `tasks/archive/2026-03-14-fix-mistral-vibe-acp-metadata.md` — related metadata fix task
- [Mistral Models Documentation](https://docs.mistral.ai/getting-started/models/)
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,7 @@ Discovered during security audit. The main agent process startup uses `-e` flags

- `packages/vm-agent/internal/acp/process.go:150-152`
- Security audit finding: HIGH severity

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as shipped. Evidence: #516 (0cd0fc6e8): /dev/shm 0600 --env-file (process.go:127-160,276-309); tests process_test.go:160-214 assert secrets never in args._
2 changes: 1 addition & 1 deletion tasks/archive/2026-03-19-ideas-page-and-ideation-system.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,4 +113,4 @@ During brainstorming, agents can produce artifacts — Playwright screenshots, r

- `tasks/backlog/2026-03-19-graph-execution-model.md` — longer-term task decomposition and graph execution
- `tasks/backlog/2026-03-18-code-context-for-task-submission.md` — complementary: how context flows into task submission
- `tasks/backlog/2026-03-09-quick-chat-mode-design.md` — serverless chat was considered and deferred in favor of VM-backed brainstorming
- `tasks/archive/2026-03-09-quick-chat-mode-design.md` — serverless chat was considered and deferred in favor of VM-backed brainstorming
Original file line number Diff line number Diff line change
Expand Up @@ -137,3 +137,7 @@ Claude Code and Mistral Vibe can use the same SAM MCP server successfully, so th
- `tasks/archive/2026-04-02-fix-codex-acp-home-directory-resolution.md`
- OpenAI Codex config reference
- MCP Streamable HTTP lifecycle and transport specs

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as superseded (not built as written). Evidence: Shipped as PR #601 under tasks/archive/2026-04-03-fix-mcp-streamable-http-compliance.md._
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,4 @@ SAM's `/mcp` endpoint treats all JSON-RPC messages as requests. When Codex sends

- `apps/api/src/routes/mcp/index.ts`
- `apps/api/src/routes/mcp/_helpers.ts`
- `tasks/backlog/2026-04-02-fix-codex-mcp-streamable-http-compliance.md`
- `tasks/archive/2026-04-02-fix-codex-mcp-streamable-http-compliance.md`
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,7 @@
## Acceptance Criteria
- [ ] Fix the timing issue in the test (likely needs a `waitFor` around the final assertion)
- [ ] Test passes reliably in CI with coverage enabled

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as superseded (not built as written). Evidence: Proposed fix landed (25f329b88, #694); root cause owned by tasks/backlog/2026-07-04-fix-flaky-tests-at-root.md, which says to archive this file._
Original file line number Diff line number Diff line change
Expand Up @@ -141,3 +141,7 @@ The error reporter sends to `/api/nodes/{nodeId}/errors` with a Bearer token. If
- JWT service: `apps/api/src/services/jwt.ts`
- Node provisioning: `apps/api/src/services/nodes.ts`
- CI build: `.github/workflows/deploy-reusable.yml:630`

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as shipped. Evidence: All seven fix groups landed via #901 (template.ts mirror script, 15-min timeout), #966 (callback 401 + logged bodies), #1010 (cloud-init schema), VERSION pinned in deploy-reusable.yml:1057._
4 changes: 2 additions & 2 deletions tasks/archive/2026-05-05-devcontainer-network-resilience.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

**Created**: 2026-05-05
**Priority**: CRITICAL
**Related**: `tasks/backlog/2026-05-05-debug-package-fixes.md` (Issues 1-3)
**Related**: `tasks/archive/2026-05-05-debug-package-fixes.md` (Issues 1-3)

## Problem Statement

Expand Down Expand Up @@ -77,7 +77,7 @@ User wants lightweight containers to support Docker usage with fast boot via pri
## References

- Failed task: `01KQVADC1ZF9ESQH70KWJDY7FB` (workspace timeout after apt failures)
- Debug package analysis: `tasks/backlog/2026-05-05-debug-package-fixes.md`
- Debug package analysis: `tasks/archive/2026-05-05-debug-package-fixes.md`
- Cloud-init template: `packages/cloud-init/src/template.ts`
- VM agent bootstrap: `packages/vm-agent/internal/bootstrap/bootstrap.go`
- Node provisioning: `apps/api/src/services/nodes.ts`
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,7 @@ PR #874 ("Fix oversized chat session message loads", May 1st) introduced two com
- PR #874: `091f2b67` — the regression commit
- `packages/shared/src/constants/sam.ts` — SAM history limit constants
- `docs/notes/2026-03-17-chat-message-duplication-report.md` — related message handling

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as shipped. Evidence: #898 did every item; the 3000 default was deliberately replaced by paging in #2165._
2 changes: 1 addition & 1 deletion tasks/archive/2026-05-12-do-only-chat-typewriter.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,4 @@ TypewriterText animates batches -> feels like streaming

## References
- React error #185: infinite render loop from dual WebSocket sources
- `tasks/backlog/2026-03-06-unify-project-chat-through-do-streaming.md` — earlier proposal for DO-only streaming
- `tasks/archive/2026-03-06-unify-project-chat-through-do-streaming.md` — earlier proposal for DO-only streaming
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,7 @@ Debug package analysis revealed four interconnected production issues that cause
- `docs/notes/2026-03-25-deployment-identity-token-middleware-leak-postmortem.md`
- `.claude/rules/06-api-patterns.md` (Hono middleware scoping)
- `.claude/rules/31-migration-safety.md`

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as shipped. Evidence: Timers #968, dispatch dedup #1033 + VM idempotency #1031, callback extraction + MCP sliding window #966._
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,8 @@ Debug package analysis revealed several cloud-init and firewall hygiene issues t
- `packages/cloud-init/src/template.ts` — cloud-init template
- `packages/cloud-init/tests/generate.test.ts` — existing tests
- `packages/vm-agent/internal/provision/provision.go` — vm-agent provisioning
- `tasks/backlog/2026-05-12-fix-vm-agent-stability.md` — broader task (this is a subset)
- `tasks/archive/2026-05-12-fix-vm-agent-stability.md` — broader task (this is a subset)

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as shipped. Evidence: #968 (cbd2ad1d3): template.ts:35-39, :632-650; tests generate.test.ts:1486-1508,1548-1570._
2 changes: 1 addition & 1 deletion tasks/archive/2026-05-12-vm-agent-container-recovery.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Some related work landed in PR #966 and PR #968, but the VM-agent resilience gap
- Bridge IP cache entries are scoped to the container ID they were resolved from, so fallback containers cannot inherit stale network metadata.
- Port scanning now treats scan failures as possible stale-container signals, clears the cached ID, re-runs the configured resolver, and emits `port.scanner_container_changed` when a replacement is found.
- Provider apt mirror injection now backs up source files, rewrites them, validates the mirror through `apt-get update` using temporary list/cache directories, and restores the original sources if validation fails.
- Root password expiration and cloud-init schema warnings are not directly actionable in this PR: no repo-controlled `chpasswd`/root password template was found, and the existing active task `tasks/backlog/2026-05-12-vm-agent-cloud-init-firewall-hygiene.md` already records the remaining cloud-init/firewall hygiene track.
- Root password expiration and cloud-init schema warnings are not directly actionable in this PR: no repo-controlled `chpasswd`/root password template was found, and the existing active task `tasks/archive/2026-05-12-vm-agent-cloud-init-firewall-hygiene.md` already records the remaining cloud-init/firewall hygiene track.

## Acceptance Criteria

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,7 @@
- [ ] `sam workspace <id> forward --port 3000 --local 8080` binds to localhost:8080 and proxies to remote port 3000
- [ ] Mismatched `--port` and `--local` counts produce a clear error
- [ ] Tests cover the remapping logic

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as shipped. Evidence: #1370 (2686df375) added --local-port (workspace.go:151-164,233-254) with tests._
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ sam workspace <workspaceId> ports # list detected ports
- Log proxied requests to stderr
- Handle SIGINT/SIGTERM for graceful shutdown
- [x] Implement `runWorkspacePorts()` — list detected ports (text + JSON output)
- [ ] ~~Add `--local` flag support for port remapping~~ — deferred to `tasks/backlog/2026-05-27-workspace-forward-local-port-remap.md`
- [ ] ~~Add `--local` flag support for port remapping~~ — deferred to `tasks/archive/2026-05-27-workspace-forward-local-port-remap.md`

### CLI: Help Text & Output
- [x] Update `helpText()` in `run.go` to include workspace commands
Expand Down
6 changes: 3 additions & 3 deletions tasks/archive/2026-06-13-app-deployment-system-status.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,11 @@ flowchart LR

```mermaid
flowchart TD
A["Per-env host-port offset collision<br/>buildDeploymentRouteTargets uses route index only;<br/>two envs on one node both grab 35000.<br/>engine.go skips composeDown of prior release.<br/>(tasks/backlog/2026-06-13-deployment-per-env-host-port-offset.md)"]:::open
B["Compose preview omits route-target ports<br/>GET .../compose renders without routeTargets;<br/>preview != real node payload.<br/>(tasks/backlog/2026-06-13-compose-preview-endpoint-route-targets.md)"]:::open
A["Per-env host-port offset collision<br/>buildDeploymentRouteTargets uses route index only;<br/>two envs on one node both grab 35000.<br/>engine.go skips composeDown of prior release.<br/>(tasks/archive/2026-06-13-deployment-per-env-host-port-offset.md)"]:::open
B["Compose preview omits route-target ports<br/>GET .../compose renders without routeTargets;<br/>preview != real node payload.<br/>(tasks/archive/2026-06-13-compose-preview-endpoint-route-targets.md)"]:::open
C["Compose-parser test coverage<br/>(tasks/backlog/2026-06-11-compose-parser-test-coverage.md)"]:::open
D["Deployment-provisioning route tests<br/>(tasks/backlog/2026-06-12-deployment-provisioning-route-tests.md)"]:::open
E["docker-exec env token exposure<br/>(tasks/backlog/2026-03-18-docker-exec-env-token-exposure.md)"]:::open
E["docker-exec env token exposure<br/>(tasks/archive/2026-03-18-docker-exec-env-token-exposure.md)"]:::open
F["Route-level error message leakage<br/>(tasks/backlog/2026-04-10-route-level-error-message-leakage.md)"]:::open
classDef open fill:#3a2f1b,stroke:#ffb300,color:#fff8e1;
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,7 @@ make public routes work.
intentionally omitted from the preview.
- [ ] Test asserting preview output matches node-apply output for a manifest with a public
route (or asserting the documented difference).

---

_Reconciled 2026-09-30 (weekly queue reconciliation): moved from `tasks/backlog/` to `tasks/archive/` as shipped. Evidence: #1312 (8ccbcee41): deployment-releases.ts:353-376 passes routeTargets matching the apply payload; tests compose-preview-parity.test.ts:110,158,231._
Loading
Loading