Canary Functional Decomp — Gap Ledger

Findings from the GRO-608 next-level consistency pass across all 11 completed functional decomposition articles. Five criteria checked per article; gaps graded P1 (blocking / load-bearing), P2 (structural), P3 (narrative completeness). Modules L and W remain on hold and are not included.


Criterion 1 — Cross-Module Dependency Symmetry

Eight of eleven modules fully reciprocate their dependency claims. Three do not (D, J, Q) — plus N partially.

P1 — Load-bearing asymmetries

Gap Source claim Missing reciprocal Action
J ↔ P J.8a: P.6.3 promotion calendar is load-bearing to J forecasting P lists J in companions but does NOT assert P.6.3 is architecturally critical to J Add explicit reciprocal contract statement in P.6.3 or P contracts section
A ↔ Q A.3.1: asset-item registry provides allow-list exclusion consumed by Q detection rules Q lists A in companions but does NOT claim dependency on A.3.1 Q must reciprocate that Q.2 detection rules depend on A.3.1 filtering

P2 — Structural asymmetries

Gap Source claim Missing reciprocal Action
D ↔ A A.2.1: reads D.6.1 SOH snapshot + D.6.3 TRANSFER-VARIANCE D lists A but does not state D.6.1/D.6.3 are consumed by A Add D contract statement for A read-dependency
N ↔ Q N.5: provides LP threshold substrate + drawer-session context to Q Q lists N in companions but does not reciprocate N.5 contracts Q must reciprocate N.5 as upstream contract provider
F ↔ J F.5.2: PO cost-flow contract consumed by J replenishment costing J lists F but does not reciprocate F.5.2 centrality J must add explicit reciprocal reference to F.5.2
T ↔ D T type-routes XFER documents to D via T.4.7 D lists T as downstream but does not reciprocate T.4.7 type-routing contract D must explicitly reciprocate T.4.7 in D.6.2 or contracts section

Criterion 2 — L4 Pointers Complete

Systemic finding: All non-canonical modules lack L4 stubs or → TBD pointers on most L3 processes. Module Q and its rule catalog companion are the sole complete examples. The gap is structural — these modules were written to L3 depth with an implicit assumption that L4 would be a later authoring pass. That pass is now explicit.

Module L3 count L4 status Specific gaps
A 12 ✗ None All 12 L3 processes (A.1.1–A.1.5, A.2.1–A.2.4, A.3.1–A.3.4) missing stubs
C 26 ✗ None All 26 L3 processes (M.1–M.5) missing stubs
D 29 ✗ None All 29 L3 processes (D.1–D.5) missing stubs
F 28 ✗ None All 28 L3 processes (F.1–F.6) missing stubs
J ~40 ⚠ Mostly complete O.1.6 (like-item forecasting): no L4 stub; O.2.6 (lead-time variance): deferred "v2.1" but no concrete L4 commitment
N 27 ✓ Complete All reference canary-module-n-device.md + §6.5
P ~35 ⚠ Partial P.2.1 (promotional window inference): no SDD crosswalk; P.4.5 (cold-start elasticity): ASSUMPTION-P-07 with no algorithm; P.5.3 (linked-item price deps): no L4 schema
Q 38 ✓ Complete Canonical — rule catalog + SDK + SDD cross-references throughout
R ~30 ✗ None All L3 processes missing stubs
S ~35 ✗ None All L3 processes missing stubs
T ~40 ✗ None All L3 processes missing stubs

Resolution applied in this pass: → TBD stubs added to all silent L3 processes in A, C, D, F, R, S, T. O.1.6 and O.2.6 upgraded to explicit TBD with author note. P.2.1, P.4.5, P.5.3 given algorithm-stub templates.


Criterion 3 — User Stories Comprehensive

Module Stories present Gaps identified
A 14 Asset-zone reassignment across store locations; reclassification triggered by unplanned retail sale of a fixture item
C 32 Seasonal tier reclassification (retail→wholesale during spring contractor ramp); credit-hold override workflow; tier inconsistency between historical and current transactions
D 38 Hub-and-spoke transfer with intermediate stop; transfer reversal before destination receives; split-transfer recommendation across multiple understocked locations; transfer audit context differs by actor (warehouse mgr vs store mgr)
F 41 PayCode creation during onboarding (post-bootstrap new tender type); tax-code line-level override; gift-card partial redemption (insufficient balance); multi-currency AR transaction; replacement-card balance reassignment on card loss/damage
J 68 ✓ Complete
N 33 Multi-device enrollment / workstation-to-station mapping (N.2.3); per-store config drift detection at scale across multi-location tenant
P 44 Stacked promotions (multiple active promos on same item); cross-category promotion spillover; markdown execution failure/rollback (buyer reverts markdown in Counterpoint, Canary must detect and sync)
Q 71 ✓ Complete
R 47 Profile-extension deferred to v3 (explicitly flagged); cross-company customer collision detection (C.5.3 scenario)
S 52 Owl eCommerce integration implicit in S.5.2 — no explicit investigator-surface user story
T 64 Offline-mode document handling absent (ASSUMPTION-T-05 exists but no corresponding user story)

Criterion 4 — Counterpoint Substrate Table Present

Module Status Detail
A ✓ by design Derived module; no own endpoints; substrate entirely from S. Intentional posture documented.
C ✗ Missing Reads AR_CUST, Customer_OpenItems, AR_CUST_CTL (from R) — enumerated in text, not tabulated
D ✗ Missing 7 inventory endpoints (Inventory_ByLocation, Items_ByLocation, Item_Inventory, InventoryLocations, InventoryControl, InventoryCost, InventoryEC) listed in executive summary, not mapped to L2 areas
F ✗ Missing ~12 endpoints (PayCodes, TaxCodes, GiftCards, NSPTransaction, Tokenize, Customer OpenItems, etc.) in text, no tabular mapping
J ✓ Complete L3-to-substrate reads mapped; document type routing explicit (PO/PREQ/RECVR/RTV)
N ✓ Complete Store, Station, DeviceConfig, Workgroup, Tokenize enumerated per section
P ✗ Missing No endpoint-mapping table at all. IM_ITEM and PS_DOC_LIN_PRICE referenced in prose only
Q ✓ Complete 14-row CRDM table; canonical format
R ✗ Missing Endpoint reads present in text; no tabular mapping
S ✗ Missing Substrate reads in text; no tabular mapping
T ✗ Missing Transaction pipeline substrate described narratively; no mapping table

Modules needing substrate tables added: C, D, F, P, R, S, T (7 of 11).


Criterion 5 — Canary Detection Hook Identified

Module Status Detail
A N/A Observer-only module; no detection surface. Contracts feed Q but A does not itself detect.
C ✗ Partial M.4 defines rules (B2B-CREDIT-01, B2B-AR-01, etc.) but rule catalog ownership unclear — not cross-referenced to Q rule families or Chirp ingest point
D ✓ Complete D.4.5 → Q alert with D.4.1 evidence; D.6.3 TRANSFER-VARIANCE → Q-IS-03; D.6.5 UNATTRIBUTED-MOVEMENT → Q anomaly correlation
F ✓ Complete F.7.3 → Q-TC-01; F.7.8 → Q-TM-02; F.7.2 → Q-TC-01; F.7.1 → Q tender-mix rules
J ✓ Complete O.6 receiving + O.7 RTV → Q-IS-01/02/04; O.4 recommendation state machine; O.8 contracts explicit
N ✗ Gap N.4 supplies LP threshold substrate to Q but no statement of which Chirp rule family each N L2 area triggers
P ✗ Gap P.2.6 (undeclared promotions) mentions "event published to Q" but does not name Q rule family; P.6.7 tangential; elasticity signal injection into O.1.4 not explicitly named as Chirp input
Q ✓ Complete Canonical — 10 rule families, all with detection hook mappings
R ✗ Missing No detection-hook registry
S ✗ Missing No detection-hook registry
T ✗ Missing No detection-hook registry

Priority Matrix

Priority Item Modules affected
P1 Reciprocate J↔P promotional-demand isolation contract J, P
P1 Reciprocate A↔Q asset-item registry filtering dependency A, Q
P2 Add Counterpoint substrate mapping tables C, D, F, P, R, S, T
P2 Add detection hook sections (name Chirp rule family per L2) C, N, P, R, S, T
P2 Reciprocate D↔A and N↔Q and F↔J and T↔D structural contracts D, N, J, T
P2 L4 stubs (→ TBD) on all silent L3 processes A, C, D, F, R, S, T
P3 Add missing user stories (enumerated per module above) A, C, D, F, N, P, R, S, T
P3 Clarify M.4 rule ownership vs Q rule catalog C
P3 Make P.4.5 cold-start elasticity algorithm explicit P

Generated: GRO-608 consistency pass, 2026-04-26. Canonical reference: canary-module-q-functional-decomposition.md.