Operant Studio
OPER-95

Portico Feature Map v7 restatus (re-file of POR-679) — QuickBooks P1 -> Incubating P2; Rippling/GCal to shipped; drop 5 external-tool rows

Band
SMALL
Suggested
Justin Cooke

Body

---
feature_id: FEAT-command-feature-map-restatus
---

## Context

Portico Feature Map v7.0 currently carries QuickBooks connector rows at status `Planned` P1 alongside Rippling and Google Calendar. DOC memo `doc_2026-08-17_command_connector_order` (Option B) reprioritized to Rippling -> Google Calendar first, QuickBooks moved to Phase 2. Downstream Command v2 tickets already shipped in Portico as POR-680 (schema), POR-681 (connector interface + BAA gate), POR-682 (lens taxonomy CI check), POR-683 (Rippling connector), POR-684 (Google Calendar connector). The Feature Map is now behind reality and must be updated to match.

Second restatus: the standing directive "Fiesta won't need other tools once Portico is complete. Possible Rippling, but not Monday, Nexhealth, Pandadoc, Salesmate, Slack" means external-tool connector rows for those five must be reviewed. Slack + Monday + NexHealth + PandaDoc + Salesmate connector rows at any status above `Incubating` revert to `Incubating` and get a routed-to note.

Re-file history: this work was originally filed as POR-679 in the portico team. That ticket dispatched to `operant-health/portico`, where the agent correctly refused with `BLOCKED-POR-679.md` because the Feature Map source, `scripts/stats.py`, `docs:stats`, and the `operant-feature-map` renderer all live in `operant-health/operant-studio` (`products/portico/feature-map.md` + `products/portico/dependency-map.md`), not the portico app repo. POR-679 has been canceled and PR #1648 has been closed. This OPER ticket re-routes to the correct repo.

Dependency ordering (per `products/portico/dependency-map.md`): this row INFORMS `FEAT-command-connector-base`; no ticket-identifier blockers.

Rippling + Google Calendar rows: since POR-683 + POR-684 already shipped as merged PRs (portico #1586, #1587), those rows should also be updated to reflect the shipped scaffold status per the operant-feature-map skill's status rules.

## Acceptance Criteria

- [ ] `products/portico/feature-map.md` located in this repo and read; current QuickBooks + Rippling + Google Calendar row IDs enumerated.
- [ ] QuickBooks connector rows: status `Planned` -> `Incubating`, priority `P1` -> `P2`, note `Deferred to Phase 2 per DOC [REDACTED-DOB] (Option B).`
- [ ] Rippling connector row: status updated to reflect that POR-683 shipped scaffold code (portico PR #1586); note `Scaffold shipped [REDACTED-DOB]; prod sync BAA-gated.`
- [ ] Google Calendar connector row: status updated to reflect that POR-684 shipped scaffold code (portico PR #1587); note `Scaffold shipped [REDACTED-DOB]; prod sync BAA-gated.`
- [ ] Slack, Monday, NexHealth, PandaDoc, Salesmate connector rows: any row at `Planned` / `Designed` / `MVP` / `In Beta` reverts to `Incubating` with note `Out of scope per standing directive — Portico replaces this tool.`
- [ ] CFR blocks for any downgraded row deleted or annotated as superseded (never leave a live CFR block on an `Incubating` row).
- [ ] `scripts/stats.py` recomputes cover stats; delta warning line inspected before render.
- [ ] PDF re-rendered via `operant-feature-map` skill (`scripts/render.js`); first 3 pages and last 2 pages inspected for wrapped or broken text.
- [ ] Both MD and PDF shared with names `portico_feature_map_md` and `portico_feature_map` (same names as prior version — enables the version history slider).
- [ ] `products/portico/feature-map.md` committed with a matching automatic checksum sync per the OPER-94 workflow (`.github/workflows/sync-product-checksums.yml`); no manual Prisma migration needed.

---
<!-- admission-rejected -->
**Admission rejected (unknown_feature_id):** feature_id=FEAT-command-feature-map-restatus is not declared in the feature-map.md of any admission-enabled product owned by this team

Attachments

Loading attachments…

Comments

Loading comments…