CRB Gap List — 2026-04-28

Pass date: 2026-04-28 | Initiated by: GRO-670 | Executor: ALX | Review gate: Jeffe


Summary

Gap Category Count Notes
Structural subsystem GAPs (L3 processes with no cmd/ mapping) 145 C=26, J-forecast/OTB/PO=33, W=14, L=15, misc=57
Universal L4 gap (L3s with TBD L4 activities) 357 Every L3 in the corpus — see Part 2
Assumption gaps (unresolved, block implementation) 7 See Part 3
Unknown cmd/ packages (purpose unconfirmed) 2 cmd/bull, cmd/hawk

L4 documentation note: The user has source documentation (NCR/Counterpoint API specs, vendor process docs, retail ops references) that can be used to fill L4 activities once the gap list is produced. See Part 4 for the highest-priority L4 targets.


Part 1 — Structural Subsystem GAPs

These are L3 processes where no CanaryGO cmd/ package exists to receive the implementation. Each requires either a new package to be built or an explicit assignment to an existing package before the L3 can be implemented.

1A. Module M — Commercial / B2B (26 L3s — full module GAP)

Root cause: No cmd/commercial package exists in CanaryGO. C is derived from C (Customer) and F (Finance) data; it has no dedicated Counterpoint endpoints of its own.

Build constraint: C requires Module C and Module F to be stable first. It is Module 4 in the v2 ring.

L3 ID L3 Process Provenance Required Subsystem
M.1.1 B2B customer flag write DOCUMENTED cmd/commercial (new)
M.1.2 Account tier assignment DOCUMENTED cmd/commercial (new)
M.1.3 Account-customer link DOCUMENTED cmd/commercial (new)
M.1.4 Account hierarchy (parent/child) DOCUMENTED cmd/commercial (new)
M.1.5 Account status lifecycle DOCUMENTED cmd/commercial (new)
M.2.1 Spending limit enforcement DOCUMENTED cmd/commercial (new)
M.2.2 Credit terms configuration DOCUMENTED cmd/commercial (new)
M.2.3 Invoice generation DOCUMENTED cmd/commercial (new)
M.2.4 Payment terms tracking DOCUMENTED cmd/commercial (new)
M.2.5 Open items aging DOCUMENTED cmd/commercial (new)
M.3.1 Contract pricing agreement storage DOCUMENTED cmd/commercial (new)
M.3.2 Volume tier pricing application DOCUMENTED cmd/commercial (new)
M.3.3 B2B discount schedule management DOCUMENTED cmd/commercial (new)
M.3.4 Contract expiry enforcement DOCUMENTED cmd/commercial (new)
M.4.1 B2B detection rule Q-M-01 (volume threshold) DOCUMENTED cmd/chirp (routes through Q pipeline)
M.4.2 B2B detection rule Q-M-02 (account-only tender) DOCUMENTED cmd/chirp
M.4.3 B2B detection rule Q-M-03 (invoice-only payment) DOCUMENTED cmd/chirp
M.4.4 B2B detection rule Q-M-04 (repeat-pattern purchasing) DOCUMENTED cmd/chirp
M.4.5 B2B detection rule Q-M-05 (PO reference present) DOCUMENTED cmd/chirp
M.5.1 B2B reporting — sales by account DOCUMENTED cmd/commercial (new)
M.5.2 B2B reporting — invoice aging DOCUMENTED cmd/commercial (new)
M.5.3 B2B reporting — contract compliance DOCUMENTED cmd/commercial (new)
M.5.4 B2B reporting — volume vs tier DOCUMENTED cmd/commercial (new)
M.5.5 Account statement generation DOCUMENTED cmd/commercial (new)
M.5.6 AR export to accounting system DOCUMENTED cmd/commercial (new)
M.5.7 Cross-module contract registry (C substrate contracts) DOCUMENTED cmd/commercial (new)

Note: M.4.x (B2B detection rules Q-M-01 through Q-M-05) routes through cmd/chirp — these are not a new-subsystem gap, but they require explicit Q-pipeline extension work documented in Q.


1B. Module O — Orders: Forecasting / ROP / OTB / PO Engine (33 L3s — partial module GAP)

Root cause: cmd/receiving covers O.6 (Receiving) and O.7 (Returns/RTV) — 14 L3s mapped. The remaining 33 L3s covering statistical forecasting, ROP/safety-stock calculation, OTB management, and automated PO generation have no corresponding cmd/ package.

Cross-module dependency: J.8a (promotional demand isolation) requires P.6.3 (promotion calendar) — this is a load-bearing inter-module contract.

L3 ID L3 Process Provenance Required Subsystem
O.1.1 Historical sales series construction DOCUMENTED cmd/forecast (new)
O.1.2 Seasonality curve fitting DOCUMENTED cmd/forecast (new)
O.1.3 Trend detection DOCUMENTED cmd/forecast (new)
O.1.4 Promotion uplift isolation DOCUMENTED cmd/forecast (new)
O.1.5 Forecast confidence scoring DOCUMENTED cmd/forecast (new)
O.1.6 Forecast model selection per SKU DOCUMENTED cmd/forecast (new)
O.1.7 Forecast output publication DOCUMENTED cmd/forecast (new)
O.2.1 Lead time calculation per vendor DOCUMENTED cmd/forecast (new)
O.2.2 Safety stock calculation DOCUMENTED cmd/forecast (new)
O.2.3 ROP (reorder point) calculation DOCUMENTED cmd/forecast (new)
O.2.4 EOQ (economic order quantity) calculation DOCUMENTED cmd/forecast (new)
O.2.5 Min/max quantity enforcement DOCUMENTED cmd/forecast (new)
O.2.6 Service level target management DOCUMENTED cmd/forecast (new)
O.3.1 Budget constraint load DOCUMENTED cmd/forecast (new)
O.3.2 OTB calculation (planned vs actual) DOCUMENTED cmd/forecast (new)
O.3.3 OTB balance tracking DOCUMENTED cmd/forecast (new)
O.3.4 OTB alert on budget breach DOCUMENTED cmd/forecast (new)
O.3.5 OTB reporting surface DOCUMENTED cmd/forecast (new)
O.4.1 Suggested order generation DOCUMENTED cmd/forecast (new)
O.4.2 Vendor grouping and MOQ enforcement DOCUMENTED cmd/forecast (new)
O.4.3 Order approval workflow DOCUMENTED cmd/forecast (new)
O.4.4 PO write-back to Counterpoint (POST /Document, DOC_TYP=PO) DOCUMENTED cmd/forecast (new) — First write-back in Canary
O.4.5 PO status tracking DOCUMENTED cmd/forecast (new)
O.5.1 Replenishment calendar management DOCUMENTED cmd/forecast (new)
O.5.2 Vendor lead-time calendar DOCUMENTED cmd/forecast (new)
O.5.3 Order cadence rules per vendor DOCUMENTED cmd/forecast (new)
O.5.4 Blackout / holiday calendar integration DOCUMENTED cmd/forecast (new)
O.8.1 Promotional demand isolation (requires P.6.3) DOCUMENTED cmd/forecast (new)
O.8.2 Event demand isolation (non-promotional spikes) DOCUMENTED cmd/forecast (new)
O.8.3 New-item bootstrap forecasting (no history) DOCUMENTED cmd/forecast (new)
O.8.4 Discontinued-item sell-through forecasting DOCUMENTED cmd/forecast (new)
O.8.5 Weather-signal demand adjustment INFERRED cmd/forecast (new)
O.8.6 Cross-SKU substitution demand adjustment INFERRED cmd/forecast (new)

Critical path note (O.4.4): O.4.4 is the first place Canary writes back to Counterpoint. This has significant architectural implications — the write-back pattern must be established and tested before O.4.4 can be implemented.


1C. Module E — Execution (~14 L3s — full module GAP, v3)

Root cause: W is a v3 capstone design. No cmd/work or equivalent package exists. No SDD has been written. Implementation depends on Q's Fox evidence-chain infrastructure being stable.

Design reference: canary-module-e-execution.md — all tables and services are projected (no code yet).

L3 ID L3 Process Provenance Required Subsystem
E.1.1 Exception signal schema (generic exception record) INFERRED cmd/work (new, v3)
E.1.2 Domain-specific rule catalogs (inventory, pricing, labor, space) INFERRED cmd/work (new, v3)
E.1.3 Exception detector — subscribes to all spine module streams INFERRED cmd/work (new, v3)
E.1.4 Rule evaluation engine per domain INFERRED cmd/work (new, v3)
E.1.5 Exception auto-escalation logic INFERRED cmd/work (new, v3)
E.2.1 Cross-domain exception aggregator by subject INFERRED cmd/work (new, v3)
E.2.2 Multi-domain pattern detection INFERRED cmd/work (new, v3)
E.2.3 Subject correlation (customer/employee) with time-window INFERRED cmd/work (new, v3)
E.3.1 Case CRUD and lifecycle (extends Fox across all domains) INFERRED cmd/work (new, v3)
E.3.2 Evidence chain (hash-chained, INSERT-only, inherits Fox model) INFERRED cmd/work (new, v3)
E.3.3 Case-exception junction management INFERRED cmd/work (new, v3)
E.4.1 Remediation routing to target modules INFERRED cmd/work (new, v3)
E.4.2 Remediation request status tracking INFERRED cmd/work (new, v3)
E.5.1 MCP tools (exception-search, case-crud, evidence-aggregation, cross-domain-correlation, remediation-routing, case-analytics) INFERRED cmd/work (new, v3)

Implementation gate: W cannot be implemented until Q's Fox evidence-chain infrastructure is stable and v2 ring modules (C, D, F, J) are shipping.


1D. Module L — Labor (~15 L3s — narrative-only, cmd/employee target)

Root cause: L is a v3 design with no functional decomp file. cmd/employee exists as a named package in CanaryGO but its current scope is unknown. All L3s are INFERRED from the schema crosswalk in the wiki narrative.

L3 ID L3 Process Provenance Required Subsystem
L.1.1 Employee record sync from Counterpoint INFERRED cmd/employee
L.1.2 Role and permission mapping INFERRED cmd/employee
L.1.3 Employee-store assignment INFERRED cmd/employee
L.2.1 Shift schedule management INFERRED cmd/employee
L.2.2 Time entry recording INFERRED cmd/employee
L.2.3 Break tracking INFERRED cmd/employee
L.2.4 Absence recording INFERRED cmd/employee
L.3.1 Productivity metric calculation (transactions/hour, items/hour) INFERRED cmd/employee
L.3.2 Productivity comparison vs store average INFERRED cmd/employee
L.3.3 Productivity signal publication to Q (LP context) INFERRED cmd/employee
L.4.1 Payroll export generation INFERRED cmd/employee
L.4.2 Pay period reconciliation INFERRED cmd/employee
L.4.3 Labor cost allocation by store/department INFERRED cmd/employee
L.5.1 Labor scheduling interface INFERRED cmd/employee
L.5.2 DC labor scheduling (distribution center) INFERRED cmd/employee

Note: All L L3s map to cmd/employee (not a new-package gap), but since cmd/employee's current scope hasn't been inspected against these L3s, all 15 should be validated against the existing package before filing as Mapped.


1E. Miscellaneous Structural GAPs (57 L3s — cross-module)

These are individual L3 processes across otherwise-mapped modules where the specific L3 has no clear subsystem assignment (INFERRED subsystem or boundary ambiguity).

Module L3 ID L3 Process Provenance Gap Detail
A A.1.1–A.3.5 All Asset Management L3s DOCUMENTED ASSUMPTION-A-01 scope conflict unresolved — subsystem is either cmd/asset (item-asset) or a new device-anomaly subsystem per canonical Bubble spec
N N.1.1–N.6.5 All Device L3s (27) DOCUMENTED cmd/edge mapping is INFERRED — not confirmed by codebase inspection
F F.5.1–F.5.4 Tokenization / secure-pay flows INFERRED Mapped to cmd/identity (INFERRED) — not confirmed
D D.4.1–D.4.5 Transfer-loss reconciliation DOCUMENTED Canary-native; no Counterpoint endpoint; cmd/transfer is target but D.4 reconciliation logic is a new capability gap
D D.5.1–D.5.4 Distribution reconciliation reports DOCUMENTED Canary-native; cmd/transfer target; no existing reconciliation surface
J O.6.8–O.6.14 DC-delivery and appointment flows (within cmd/receiving) INFERRED Receiving package scope unclear — DC delivery vs vendor direct split
P P.2.1 Promotional window inference from price variance INFERRED P observes IM_ITEM price fields — no dedicated Counterpoint promo endpoint; detection approach unconfirmed
cmd/bull Unknown package — no module mapping identified Needs codebase inspection
cmd/hawk Unknown package — no module mapping identified Needs codebase inspection

Part 2 — Universal L4 Gap

Every L3 process in the entire CRB corpus (357 total) has L4 marked TBD.

This is not a deficiency of the decomp pass — it reflects that the functional decomp files themselves do not yet specify implementation-level activities. L4 is the atomic step level that maps to individual Go functions, handlers, or jobs.

L4 Gap by Module

Module L3 Count L4 Status Priority for Documentation Resolution
T — Transaction Pipeline 41 All TBD Medium — T is the most mature module; L4s are inferable from the cmd/tsp codebase
Q — Loss Prevention 38 All TBD High — detection rules are well-documented; L4s can be derived from rule catalogs
C — Customer 32 All TBD High — Counterpoint endpoints documented; L4s are directly mappable
N — Device 27 All TBD Medium — PS_STR_CFG_PS field list provides strong L4 anchors for N.1/N.2
A — Asset Management 12 All TBD Low (blocked on ASSUMPTION-A-01 scope resolution)
C — Commercial / B2B 26 All TBD Medium — M.4.x L4s can be derived from Q rule catalog patterns
D — Distribution 35 All TBD High — Counterpoint endpoints documented; cmd/transfer + cmd/receiving scope clear
F — Finance 31 All TBD High — PayCode/TaxCode/Secure Pay endpoints documented in wiki
J — Orders 47 All TBD High — O.6/O.7 (receiving, RTV) directly mappable; O.1–O.5 need forecasting algorithm docs
S — Space / Range / Display 36 All TBD High — 17 Counterpoint endpoints documented; largest catalog surface
P — Pricing & Promotion 33 All TBD High — IM_ITEM price fields and PS_DOC_LIN_PRICE documented
L — Labor 15 All TBD Low (v3 design; no functional decomp)
W — Execution 14 All TBD Low (v3 capstone; blocked on Q Fox stabilization)
TOTAL 357 All TBD

L4 Documentation Candidates

The following L3 processes are the highest-leverage targets for documentation-based L4 resolution, because source documents (Counterpoint API spec, RapidPOS, NCR docs, vendor specs) directly describe the implementation steps:

Priority Module L3 ID L3 Process Documentation Source
P1 T T.1.1 Counterpoint poll-ingress via GET /Documents NCR/Counterpoint REST API spec — /Documents endpoint parameters, pagination, watermark behavior
P1 T T.3.3–T.3.8 Field extraction (header, payment, tax, line, audit, pricing) NCR/Counterpoint data model — PS_DOC, PS_DOC_PMT, PS_DOC_TAX, PS_DOC_LIN, PS_DOC_LIN_PRICE schemas
P1 R C.1.1–C.1.5 Customer profile read-through to Counterpoint NCR/Counterpoint GET /Customers, GET /Customer — field mapping to Canary customers table
P1 N N.1.1–N.2.6 Store config ingestion (PS_STR_CFG_PS, ~150 fields) NCR/Counterpoint GET /StoreSettings or equivalent — field list documented in N module wiki
P1 F F.1.1–F.1.5 PayCode caching and tax code ingestion NCR/Counterpoint PayCode + TaxCode endpoints (cached 24h)
P1 S S.1.1–S.2.8 Item catalog ingestion (17 Counterpoint endpoints) NCR/Counterpoint Item endpoints — field-by-field mapping documented in S module wiki
P1 D D.1.1–D.2.6 Inventory snapshot ingestion (7 Counterpoint endpoints) NCR/Counterpoint Inventory endpoints — snapshot vs delta pattern
P1 D D.3.1–D.3.8 Transfer lifecycle (PS_DOC DOC_TYP=XFER) NCR/Counterpoint Document omnibus — XFER document structure and status fields
P1 J O.6.1–O.6.7 Receiving lifecycle (PS_DOC DOC_TYP=RECVR) NCR/Counterpoint Document omnibus — RECVR structure; receiving confirmation fields
P2 Q Q.2.1–Q.2.10 Detection rule evaluation (11 rule families, 24 rules) Q rule catalog (canary-module-q-counterpoint-rule-catalog.md) — each rule has explicit trigger logic
P2 P P.1.1–P.1.6 Price observation via IM_ITEM price fields NCR/Counterpoint IM_ITEM schema — PRIC_1 through PRIC_N fields, discount matrix
P2 P P.2.1 Promotional window inference from PS_DOC_LIN_PRICE variance NCR/Counterpoint PS_DOC_LIN_PRICE — promotion flag fields (ASSUMPTION-P-01 must be resolved first)
P2 F F.4.1–F.4.5 Payment flow parsing (NSPTransaction, Secure Pay) NCR Secure Pay API — NSPTransaction endpoint (no APIKey required; registration option)
P3 J O.4.4 PO write-back to Counterpoint (POST /Document, DOC_TYP=PO) NCR/Counterpoint POST /Document — first Canary write-back; field requirements for PO creation
P3 J O.1.1–O.3.5 Forecasting, ROP, OTB calculation engine Retail forecasting algorithm docs (not Counterpoint-specific; statistical methods)

Action: When the user provides documentation for the above, map each source doc to the L3 IDs in this table and derive L4 activities from the documented API parameters, field names, and operation sequences.


Part 3 — Assumption Gaps

These are unresolved assumptions in the functional decomp files that directly block L3 or L4 implementation. Each requires a decision from Jeffe or real-customer validation before the affected L3s can be marked implementation-ready.

Assumption ID Module Description Impact Resolution Path
ASSUMPTION-A-01 A Scope conflict — canonical Canary spec (Bubble) describes A as device-anomaly detection; the functional decomp card describes A as item-asset-management via IM_ITEM.ITEM_TYP. These are different products. All 12 A L3s are blocked until scope is resolved. If device-anomaly, a new subsystem is needed. If item-asset, cmd/asset proceeds as mapped. Jeffe decision: which A definition is authoritative for v2?
ASSUMPTION-N-02 N Drawer-close event modeling — N.4 (LP substrate) provides drawer config thresholds to Q, but how drawer-close events are represented and routed is undocumented. N.4 is the highest-leverage L2 for Q dependency. Mis-modeling the drawer-close event would break LP detection rules that depend on drawer state. Real-customer data inspection — confirm how PS_DOC captures end-of-drawer events
ASSUMPTION-D-03 D RECVR confirmation signal — D's receiving confirmation flow (D.3.6) depends on T.4.7 routing RECVR documents to J, but the confirmation signal path back to D is unspecified. D.3 transfer lifecycle and O.6 receiving lifecycle may have a circular dependency if confirmation isn't clearly modeled. Codebase inspection — confirm how cmd/receiving signals completion back to inventory
ASSUMPTION-Q-05 Q Dead-count workflow — Q's dead-count process (cashier count before blind close) is described in the allow-list (Q.6) but the exact workflow event sequence is undocumented. Q rule Q-DC-01 (drawer discrepancy) depends on this workflow. If the event sequence is wrong, the rule fires on false positives. Real-customer workflow observation or NCR/Counterpoint documentation of end-of-day close sequences
ASSUMPTION-J-06 J OTB representation — O.3 (OTB Management) assumes OTB is tracked as a Canary-native budget construct, not read from Counterpoint. Whether Counterpoint has a budget/OTB surface is undocumented. O.3.1–O.3.5 (5 L3s) could be fully GAP or partially mappable if Counterpoint carries budget data. NCR/Counterpoint API inspection — check for budget or OTB-related endpoints
ASSUMPTION-J-08 J Buyer v2 workflow — O.4 assumes a buyer approval workflow for suggested orders before PO write-back. The approval UX model (MCP tools surface vs dedicated workflow) is unspecified. O.4.3 (order approval) and O.4.4 (PO write-back) are blocked on this — the approval step gates the first Canary write-back. Jeffe design decision: MCP-tool-based approval flow or dedicated workflow surface?
ASSUMPTION-P-01 P PS_DOC_LIN_PRICE population — P.2 (Promotion Detection) depends on PS_DOC_LIN_PRICE being populated per transaction. Whether this table is actually written by Counterpoint in garden-center deployments is unverified. P.2.1 (promotional window inference) entirely depends on this field being populated. If it isn't, the entire promotional detection approach must change. Real-customer data inspection — query PS_DOC_LIN_PRICE count against recent transactions

Part 4 — Unknown cmd/ Packages

Two cmd/ packages exist in the CanaryGO repo whose module mapping is unconfirmed.

Package Status Required Action
cmd/bull Unknown — purpose not determined Inspect package source; determine which CRB module(s) it serves; update PASS-MANIFEST and PROCESS-MAP
cmd/hawk Unknown — purpose not determined Inspect package source; determine which CRB module(s) it serves; update PASS-MANIFEST and PROCESS-MAP

If either package is the authoritative home for one of the structural GAP modules (C, J-forecast, W, or L), the gap count above should be updated accordingly.


Part 5 — Linear Issue Backlog (Phase 4 Input)

The following new Linear issues should be created in Canary.GO as Backlog items with Label Blueprint:

Issue Title Module L3 Count Milestone Notes
Gap: C — No cmd/commercial subsystem (26 L3s) C 26 M4 — Module Spine C requires R and F stable first
Gap: J — No forecast/ROP/OTB/PO subsystem (33 L3s) J 33 M4 — Module Spine Critical path: O.4.4 is first write-back to Counterpoint
Gap: W — Execution cmd/work not built (v3, 14 L3s) W 14 M5 — v3 Ring Blocked on Q Fox stabilization
Gap: L — Labor cmd/employee scope needs validation (15 L3s) L 15 M4 — Module Spine cmd/employee exists; scope TBD
Gap: A — ASSUMPTION-A-01 scope conflict blocks all A L3s A 12 M3 — v2 Core Founder decision required
Gap: Universal L4 — 357 L3s have no L4 activities (documentation pass needed) ALL 357 M4 — Module Spine User has documentation; see Part 2 L4 documentation candidates
Gap: cmd/bull and cmd/hawk — module mapping unknown M3 — v2 Core Inspect codebase first

The following existing module epics (GRO-647 through GRO-659) should receive a comment linking to the corresponding decomp file and noting any CONFLICTING findings:

Epic Module Comment content
GRO-647 T Link to CRB-PROCESS-MAP.md T section; note all 41 L3s mapped to cmd/tsp; all L4s TBD
GRO-648 R Link to CRB-PROCESS-MAP.md R section; note all 32 L3s mapped to cmd/customer; 9 ASSUMPTIONs
GRO-649 N Link to CRB-PROCESS-MAP.md N section; note cmd/edge mapping is INFERRED; ASSUMPTION-N-02
GRO-650 A Link to CRB-PROCESS-MAP.md A section; note ASSUMPTION-A-01 scope conflict — BLOCKED
GRO-651 Q Link to CRB-PROCESS-MAP.md Q section; note 38 L3s mapped; 12 ASSUMPTIONs; M.4.x adds 5 rules
GRO-652 C Link to CRB-PROCESS-MAP.md C section; note all 26 L3s GAP; new cmd/commercial required
GRO-653 D Link to CRB-PROCESS-MAP.md D section; note D.4/D.5 are Canary-native GAPs; ASSUMPTION-D-03
GRO-654 F Link to CRB-PROCESS-MAP.md F section; note F.5 tokenization INFERRED to cmd/identity
GRO-655 J Link to CRB-PROCESS-MAP.md J section; note 33 L3s GAP for forecast/OTB/PO; ASSUMPTION-J-06, J-08
GRO-656 S Link to CRB-PROCESS-MAP.md S section; note all 36 L3s mapped to cmd/item; 17 endpoints
GRO-657 P Link to CRB-PROCESS-MAP.md P section; note ASSUMPTION-P-01 critical; P.6.3→J.8a dependency
GRO-658 L Link to CRB-PROCESS-MAP.md L section; note narrative-only; all 15 L3s INFERRED
GRO-659 W Link to CRB-PROCESS-MAP.md W section; note v3 capstone; all 14 L3s GAP; blocked on Q Fox

Pass: GRO-670 | Phase 2 complete | Next: Phase 3 — CRB-LINT-REPORT.md