# Story Regression Status Report

## Purpose

This is the current 33-story status snapshot for the downstream watchdog line.

It answers three different questions:

1. what has real execution evidence right now
2. what is only planning-ready
3. what is currently execution-ready vs still blocked

## Evidence Line

Current repo evidence:

1. browser watchdog exists as scene/case framework
2. API watchdog contract now exists with schema + planner
3. API planner dry-run currently validates `4` scenes and `6` API cases
4. API live execution runner now exists for the first-wave action/assertion set
5. clean local bootstrap now succeeds end-to-end
6. real local API run reports now exist under:
   - `.runtime/watchdog/runs/api/local-33-baseline/`
   - `.runtime/watchdog/runs/api/local-33-admin-subst/`
   - `.runtime/watchdog/runs/api/local-33-after-seed-fix/`
   - `.runtime/watchdog/runs/api/local-33-after-contract-fix/`
   - `.runtime/watchdog/runs/api/local-33-after-campaign-fix/`

Meaning:

1. `runtime-proven pass count` is now `3`
2. `contract/planner-proven API cases` is `6`
3. local infra/bootstrap is no longer the primary blocker
4. current failures have narrowed to 3 product/runtime gaps in the local stack
5. story readiness count below is the current operational planning truth

## Topline Summary

Total open story scenarios: `33`

| Status | Count | Meaning |
| --- | --- | --- |
| `planning-ready` | `19` | repo-local case/data design is materially in place, but not necessarily runnable today |
| `needs-data-config` | `7` | blocked mainly by seed/bootstrap/config closure |
| `blocked-deferred` | `7` | blocked by broader capability gap, admin-heavy substrate, or deferred scope |

## Execution Reality

| Metric | Count | Meaning |
| --- | --- | --- |
| `planner-valid API cases` | `6` | schema + planner can enumerate the case |
| `locally executed today` | `6` | first-wave API cases have real local execution evidence |
| `live-passed` | `3` | first-wave API cases that now pass locally end-to-end |
| `live-failed` | `3` | remaining local failures are product/runtime gaps, not env wiring |
| `not-yet-executed` | `27` | no real local execution case exists yet for the rest of the 33 stories |

Current local passes:

1. `#758 lead create`
2. `#757 lead convert`
3. `#744 opportunity products`

## Local API Reports

Run:

1. `npm run watchdog-api -- --run-id local-33-baseline`
2. `npm run watchdog-api -- --run-id local-33-admin-subst`
3. `npm run watchdog-api -- --run-id local-33-after-seed-fix`
4. `npm run watchdog-api -- --run-id local-33-after-contract-fix`
5. `npm run watchdog-api -- --run-id local-33-after-campaign-fix`

Observed baseline summary:

1. scenes: `4`
2. cases: `6`
3. passed: `0`
4. failed: `6`
5. blocked: `0`
6. infra_error: `0`

Observed baseline blockers:

1. intended non-admin actors can log in but fail API access with `MISSING_PERMISSION: ApiEnabled`
2. OAuth password grant response does not include a refresh token
3. one case hits login rate limit and then cascades to `INVALID_SESSION_ID`

Meaning:

1. Step 3 has produced a real local execution report
2. the next blocker is no longer planner-only
3. the next blocker is now runtime permission and contract closure

Observed admin-substitution summary:

1. scenes: `4`
2. cases: `6`
3. passed: `0`
4. failed: `6`
5. blocked: `0`
6. infra_error: `0`

Observed admin-substitution blockers:

1. `#758 lead create`
   - create/query succeed
   - final assertion fails because query payload does not return `Name`
2. `#780 oauth compatibility`
   - password grant succeeds
   - refresh step fails because password grant response does not return `refresh_token`
3. `#763 campaign add members`
   - case expects `Campaign.Name = Watchdog Active Campaign`
   - local shared seed creates `Watchdog Seed Campaign`
4. `#757 lead convert`
   - case expects convertible lead `watchdog+convertible@example.invalid`
   - current shared seed only provides baseline lead
5. `#744 opportunity products`
   - seed opportunity exists
   - query uses `PricebookEntry WHERE Product2.ProductCode = ...`
   - backend returns `INVALID_QUERY` for that member-expression filter
6. `#745 opportunity stage progress`
   - case login got `429 Too Many Requests`
   - follow-up request uses invalid session

Observed latest local summary:

1. scenes: `4`
2. cases: `6`
3. passed: `3`
4. failed: `3`
5. blocked: `0`
6. infra_error: `0`

Observed latest local failures:

1. `#763 campaign add members`
   - older locked-ref run returned `400` on `CampaignMember` create
   - fresh verification against upstream `origin/main` is now green after `NexusCRM#499`
2. `#780 oauth compatibility`
   - password grant succeeds
   - response still omits `refresh_token`
3. `#745 opportunity stage progress`
   - stage update now succeeds with active stage value
   - `Probability` side effect is still absent after patch

## Current API Watchdog Coverage

Planner-validated API cases: `6`

| Story | Case ID | State |
| --- | --- | --- |
| #780 | `oauth-compatibility-api` | planner-valid |
| #758 | `lead-create-persist-api` | planner-valid |
| #757 | `lead-convert-api` | planner-valid |
| #744 | `opportunity-products-api` | planner-valid |
| #745 | `opportunity-stage-progress-api` | planner-valid |
| #763 | `campaign-add-members-api` | planner-valid |

## 33-Story Snapshot

| Issue | Area | Status | Reason |
| --- | --- | --- | --- |
| #780 | auth | `planning-ready` | planner-valid, but auth bootstrap and live runner are still open |
| #761 | lead admin | `needs-data-config` | needs `security-visibility` + `setup-metadata-samples` closure |
| #760 | lead browse | `planning-ready` | shared baseline story, but no live browser/API execution proof yet |
| #759 | lead status | `planning-ready` | shared baseline story, but no live execution proof yet |
| #758 | lead create | `planning-ready` | planner-valid and nearest execution-ready candidate |
| #757 | lead convert | `planning-ready` | planner-valid, but still depends on convert path + runner delivery |
| #158 | account actions | `planning-ready` | shared baseline story, but no live execution proof yet |
| #748 | opportunity activity | `planning-ready` | shared baseline story, but no live execution proof yet |
| #747 | opportunity fields | `planning-ready` | shared baseline story, but no live execution proof yet |
| #746 | opportunity tabs/actions | `planning-ready` | shared baseline story, but no live execution proof yet |
| #745 | opportunity stage progress | `planning-ready` | planner-valid after seed/query alignment |
| #744 | opportunity products | `planning-ready` | planner-valid after seed/query alignment |
| #773 | quote line items | `planning-ready` | `quote-core` scenario-local quote and QLI seed is now repo-tracked |
| #772 | quote create | `planning-ready` | shared source opportunity/product graph is cataloged; no pre-seeded Quote is required |
| #771 | quote approval | `needs-data-config` | depends on `quote-core` + `approval-core` + env approval config |
| #172 | order create | `blocked-deferred` | inherited order capability gap remains |
| #173 | contract management | `blocked-deferred` | inherited contract capability gap remains |
| #766 | campaign list | `planning-ready` | shared baseline story, but no live execution proof yet |
| #765 | campaign edit | `planning-ready` | shared baseline story, but no live execution proof yet |
| #764 | campaign status admin | `planning-ready` | `campaign-core` contains mutable member-status fixtures |
| #763 | campaign add members | `planning-ready` | planner-valid after seed/query alignment |
| #167 | page layouts admin | `blocked-deferred` | broad setup metadata surface |
| #166 | object schema admin | `blocked-deferred` | broad setup metadata surface |
| #717 | flow admin | `blocked-deferred` | broad setup/runtime authoring surface |
| #731 | users/roles/sharing | `needs-data-config` | security/bootstrap import contract still open |
| #730 | permission sets | `needs-data-config` | security/bootstrap import contract still open |
| #160 | approval submit tab | `needs-data-config` | approval env graph still absent |
| #159 | approval criteria admin | `needs-data-config` | approval config + setup metadata still absent |
| #732 | RLS/FLS | `needs-data-config` | seed-ready but bootstrap-blocked for contrasted actors/perms |
| #774 | labels/validation | `ready-now` | shared baseline story |
| #171 | reports/dashboards | `blocked-deferred` | reporting fixture and contract not first-wave |
| #170 | integration | `blocked-deferred` | integration runtime path not first-wave |
| #174 | tasks/events timeline | `ready-now` | shared baseline story |

## Unresolved Problem Classes

Current unresolved problem classes: `6`

| Class | Affected Stories | Summary |
| --- | --- | --- |
| `quote-graph` | #771 #172 #173 | approval/order/contract branch still needs quote-derived scenario-local closure |
| `approval-env` | #160 #159 #771 | approval definition, approver actor, and submit permission still not bootstrapped |
| `security-bootstrap` | #730 #731 #732 #761 | contrasted actors/roles/permsets/FLS/RLS import contract still not runnable end-to-end |
| `setup-metadata-surface` | #166 #167 #717 #159 #761 | admin metadata fixtures are now scaffolded, but runtime authoring surfaces are still broad |
| `order-contract-gap` | #172 #173 | inherited capability gaps remain for order/contract execution |
| `deferred-reporting-integration` | #171 #170 | lower-priority non-first-wave surfaces remain deferred |

## Practical Readout

What you can say right now:

1. `19 / 33` stories are planning-ready at the current repo/data-contract level
2. `6 / 33` already have planner-validated API case specs
3. only `1 / 33` is currently closest to true execution-ready once the live runner lands
4. `7 / 33` are mostly blocked by missing data/bootstrap/config
5. `7 / 33` remain blocked or intentionally deferred by broader capability scope

What you cannot say yet:

1. that `19 / 33` are already runnable locally end-to-end
2. that the current service has a real pass-rate report across all 33 stories

That live pass-rate becomes available only after:

1. `M5-execution` lands
2. first-wave API cases run against a live environment
3. browser watchdog and API watchdog reports are emitted from real runs
