@@ -93,7 +93,7 @@ describe("Catalog Generator", () => {
9393 }
9494 } ) ;
9595
96- it ( "cross-join produces 663 cells (646 integrated + 17 starters)" , ( ) => {
96+ it ( "cross-join produces 737 cells (720 integrated + 17 starters)" , ( ) => {
9797 runGenerator ( ) ;
9898 const catalog = readCatalog ( ) ;
9999
@@ -107,13 +107,13 @@ describe("Catalog Generator", () => {
107107 ( c : any ) => c . manifestation === "starter" ,
108108 ) ;
109109
110- expect ( integrated . length ) . toBe ( 646 ) ; // 38 features x 17 integrations
110+ expect ( integrated . length ) . toBe ( 720 ) ; // 40 features x 18 integrations
111111 expect ( starters . length ) . toBe ( 17 ) ;
112- expect ( catalog . cells . length ) . toBe ( 663 ) ;
113- expect ( catalog . metadata . total_cells ) . toBe ( 663 ) ;
112+ expect ( catalog . cells . length ) . toBe ( 737 ) ;
113+ expect ( catalog . metadata . total_cells ) . toBe ( 737 ) ;
114114 } ) ;
115115
116- it ( "LGP has status=wired for its 33 features (32 wired + 1 stub), unshipped for the other 5 " , ( ) => {
116+ it ( "LGP has 40 cells: 37 wired + 1 stub + 2 unshipped " , ( ) => {
117117 runGenerator ( ) ;
118118 const catalog = readCatalog ( ) ;
119119
@@ -122,18 +122,16 @@ describe("Catalog Generator", () => {
122122 c . integration === "langgraph-python" &&
123123 c . manifestation === "integrated" ,
124124 ) ;
125- expect ( lgpCells . length ) . toBe ( 38 ) ; // One cell per feature
125+ expect ( lgpCells . length ) . toBe ( 40 ) ; // One cell per feature
126126
127127 const wired = lgpCells . filter ( ( c : any ) => c . status === "wired" ) ;
128128 const stub = lgpCells . filter ( ( c : any ) => c . status === "stub" ) ;
129129 const unshipped = lgpCells . filter ( ( c : any ) => c . status === "unshipped" ) ;
130130
131- // LGP has 38 features in manifest: 37 with routes (wired) + 1 without route (stub = cli-start)
132- // Waves 2a (voice) + 2b (multimodal) + 3a (auth) + 3b (agent-config)
133- // + 4a (byoc-hashbrown) + 4b (byoc-json-render) consolidated → 37 wired + 1 stub, 0 unshipped
131+ // LGP has 40 features: 37 wired + 1 stub (cli-start) + 2 unshipped
134132 expect ( wired . length ) . toBe ( 37 ) ;
135133 expect ( stub . length ) . toBe ( 1 ) ;
136- expect ( unshipped . length ) . toBe ( 0 ) ;
134+ expect ( unshipped . length ) . toBe ( 2 ) ;
137135 } ) ;
138136
139137 it ( "stub detection: LGP/cli-start has stub status (demo exists, no route)" , ( ) => {
@@ -148,35 +146,33 @@ describe("Catalog Generator", () => {
148146 expect ( cliStartCell . manifestation ) . toBe ( "integrated" ) ;
149147 } ) ;
150148
151- it ( "parity tier: LGP = reference (most wired features)" , ( ) => {
149+ it ( "parity tier: LGF = reference (most wired features, fewest stubs )" , ( ) => {
152150 runGenerator ( ) ;
153151 const catalog = readCatalog ( ) ;
154152
155- expect ( catalog . metadata . reference ) . toBe ( "langgraph-python " ) ;
153+ expect ( catalog . metadata . reference ) . toBe ( "langgraph-fastapi " ) ;
156154
157- // All LGP integrated cells should have parity_tier = "reference"
158- const lgpCells = catalog . cells . filter (
155+ // All LGF integrated cells should have parity_tier = "reference"
156+ const lgfCells = catalog . cells . filter (
159157 ( c : any ) =>
160- c . integration === "langgraph-python " &&
158+ c . integration === "langgraph-fastapi " &&
161159 c . manifestation === "integrated" ,
162160 ) ;
163- for ( const cell of lgpCells ) {
161+ for ( const cell of lgfCells ) {
164162 expect ( cell . parity_tier ) . toBe ( "reference" ) ;
165163 }
166164 } ) ;
167165
168- it ( "parity tier: 8-feature integration = partial (intersection >= 3 with reference)" , ( ) => {
166+ it ( "parity tier: crewai-crews (34 wired) = partial (intersection >= 3 with reference)" , ( ) => {
169167 runGenerator ( ) ;
170168 const catalog = readCatalog ( ) ;
171169
172- // All 16 non-LGP integrations have 8 features, all in LGP's set
173- // intersection with reference = 8 >= 3 => partial
174170 const crewaiCells = catalog . cells . filter (
175171 ( c : any ) =>
176172 c . integration === "crewai-crews" && c . manifestation === "integrated" ,
177173 ) ;
178174 const crewaiWired = crewaiCells . filter ( ( c : any ) => c . status === "wired" ) ;
179- expect ( crewaiWired . length ) . toBe ( 8 ) ;
175+ expect ( crewaiWired . length ) . toBe ( 34 ) ;
180176
181177 // All cells for crewai should have parity_tier = "partial"
182178 for ( const cell of crewaiCells ) {
@@ -189,16 +185,13 @@ describe("Catalog Generator", () => {
189185 const catalog = readCatalog ( ) ;
190186
191187 expect ( catalog . metadata ) . toBeDefined ( ) ;
192- expect ( catalog . metadata . total_cells ) . toBe ( 663 ) ;
193-
194- // Consolidated waves 2a/2b/3a/3b/4a/4b shifted 6 LGP cells from
195- // unshipped to wired: LGP wired 31→37, LGP unshipped 6→0.
196- // Wired = LGP 37 wired + 16 * 8 wired + 17 starters = 37 + 128 + 17 = 182
197- // Stub = 1 (LGP cli-start)
198- // Unshipped = 0 (LGP) + 16 * 30 (other integrations) = 0 + 480 = 480
199- expect ( catalog . metadata . wired ) . toBe ( 182 ) ;
200- expect ( catalog . metadata . stub ) . toBe ( 1 ) ;
201- expect ( catalog . metadata . unshipped ) . toBe ( 480 ) ;
188+ expect ( catalog . metadata . total_cells ) . toBe ( 737 ) ;
189+
190+ // 18 integrations x 40 features + 17 starters = 737 total cells
191+ // Wired = 524, Stub = 8, Unshipped = 205
192+ expect ( catalog . metadata . wired ) . toBe ( 524 ) ;
193+ expect ( catalog . metadata . stub ) . toBe ( 8 ) ;
194+ expect ( catalog . metadata . unshipped ) . toBe ( 205 ) ;
202195 } ) ;
203196
204197 it ( "max_depth: D4 for wired/stub cells, D0 for unshipped" , ( ) => {
0 commit comments