# Staging Regression Notes

## 2026-04-07 12:53 MSK — rmcp.itexp.me

- deploy commit: `unknown`
- checked by: `codex + operator`
- smoke status: `partial`
- scope:
  - auth
  - ui shell
  - mcp health
  - clean routes
  - legacy redirects

### Passed

- `bash scripts/staging-smoke.sh https://rmcp.itexp.me` passed.
- public routes returned `200`:
  - `/`
  - `/login`
  - `/agents`
  - `/secrets`
  - `/wizard/`
  - `/mcp/health`
- `/api/auth/session` returned `401` with `application/json`, not HTML fallback:
  - `{"error":{"code":"unauthorized","message":"authentication required"}}`
- legacy routes redirected correctly:
  - `/html/login.html` -> `/login`
  - `/html/agents.html` -> `/agents`
  - `/html/wizard/` -> `/wizard/`

### Findings

- none in this pass

### Infra notes

- this pass covered only unauthenticated public/staging smoke;
- authenticated UI flows, MCP tool calls, secrets/auth-profile flows and protocol smoke were not exercised in this entry.

### Follow-up

- run a full authenticated browser smoke after the next deploy;
- record `REST`, `GraphQL`, `gRPC` protocol smoke results in the next entry;
- add WebSocket/SOAP status as `not exercised` or `passed/failed` explicitly.

## 1. Назначение

Этот документ фиксирует результаты ручных проверок на staging/production-like окружении после deploy.

Он нужен для трех задач:

- хранить пост-деплойные замечания вне чата;
- отличать разовые сбои окружения от продуктовых регрессий;
- дать следующему агенту нормальный handoff по реальному состоянию стенда.

Использовать вместе с:

- [deploy-and-staging-smoke.md](/home/a.tolmachev/code/rust/mcpaas/docs/deploy-and-staging-smoke.md)
- [manual-regression-checklist.md](/home/a.tolmachev/code/rust/mcpaas/docs/manual-regression-checklist.md)
- [authenticated-staging-pass.md](/home/a.tolmachev/code/rust/mcpaas/docs/authenticated-staging-pass.md)

Шаблон нового блока можно быстро сгенерировать через:

```bash
just staging-note-block <domain> <deploy-sha> "codex + operator"
```

## 2. Как вести записи

Каждый deploy или ручной regression pass должен добавляться новым блоком в начало документа.

На один блок фиксировать:

- дата и время;
- окружение;
- commit/tag/image;
- кто запускал pass;
- какие smoke steps прошли;
- какие дефекты подтверждены;
- какие наблюдения являются только инфраструктурными;
- какие follow-up fixes нужны.

Если замечание исправлено, не удалять его из истории, а отметить:

- `status: fixed`
- `fixed_by: <commit>`

## 3. Формат записи

Использовать такой шаблон:

```md
## YYYY-MM-DD HH:MM TZ — <environment>

- deploy commit: `<sha>`
- checked by: `<name>`
- smoke status: `passed | partial | failed`
- scope:
  - auth
  - ui shell
  - operations
  - wizard
  - agents
  - api keys
  - secrets
  - logs
  - usage
  - streaming
  - mcp smoke

### Passed

- ...

### Findings

1. `<severity>` `<short title>`
   - area: `<page/service>`
   - symptom: `...`
   - reproduction: `...`
   - expected: `...`
   - actual: `...`
   - status: `open | fixed | accepted`
   - fixed_by: `<sha or ->`

### Infra notes

- ...

### Follow-up

- ...
```

## 4. Severity model

Использовать только 4 уровня:

- `critical`
  deploy unusable, login broken, MCP unavailable, data corruption risk
- `high`
  primary flow broken, но система частично работает
- `medium`
  заметный UX/runtime дефект с обходным путем
- `low`
  косметика, wording, layout, docs mismatch

## 5. Что считать finding, а что нет

### Считать finding

- broken routing;
- redirect loop;
- wrong auth/session behavior;
- page-level JS exception;
- incorrect MCP result;
- secret/auth profile flow mismatch;
- deploy route returning HTML instead of JSON;
- streaming session/job inconsistency.

### Не считать product finding

- разовый сетевой timeout;
- локальный browser glitch без воспроизведения;
- внешний upstream outage из публичного smoke target;
- предупреждения, не влияющие на flow;
- заранее известные `planned` capability blocks.

Такие случаи писать в `Infra notes`, а не в `Findings`.

## 6. Open follow-up inventory

Следующий полный проход должен заполнить минимум:

- auth/login status;
- clean routes status;
- `Secrets -> Auth Profiles -> Wizard -> Test run` статус;
- `REST`, `GraphQL`, `gRPC` smoke results;
- streaming pages status;
- WebSocket/SOAP note:
  - `not exercised`
  - или `failed/passed` с причиной.

## 7. Последняя актуальная запись

На данный момент:

- automated baseline локально зеленый;
- helper-based staging smoke на `rmcp.itexp.me` прошел;
- полный authenticated staging pass еще не занесен.
