@codependix/nx 0.0.51 β†’ 0.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## 0.0.53 (2026-11-04)
2
+
3
+ ### 🧱 Updated Dependencies
4
+
5
+ - Updated codependix-configuration to 0.0.66
6
+ - Updated codependix-cli to 0.0.67
7
+
8
+ ## 0.0.52 (2026-11-04)
9
+
10
+ ### πŸ”₯ Performance
11
+
12
+ - **codependix:** ⚑️ judge every project from one batched boundary check ([#2111](https://github.com/organizzolini/codebase/pull/2111))
13
+
14
+ ### 🧱 Updated Dependencies
15
+
16
+ - Updated codependix-configuration to 0.0.65
17
+ - Updated codependix-cli to 0.0.66
18
+
1
19
  ## 0.0.51 (2026-11-04)
2
20
 
3
21
  ### 🧱 Updated Dependencies
package/README.md CHANGED
@@ -240,16 +240,19 @@ graph LR
240
240
  <!-- codependix:start name="codependix-nestjs-modules" -->
241
241
  ```mermaid
242
242
  flowchart LR
243
+ BatchModule
243
244
  ConfigurationModule
244
245
  GateModule
245
246
  InputModule
246
247
  MainModule
247
248
  OverrideResolutionModule
248
249
  PluginModule
250
+ BatchModule --> GateModule
249
251
  ConfigurationModule --> InputModule
250
252
  ConfigurationModule --> OverrideResolutionModule
251
253
  GateModule --> ConfigurationModule
252
254
  GateModule --> PluginModule
255
+ MainModule --> BatchModule
253
256
  MainModule --> GateModule
254
257
  MainModule --> PluginModule
255
258
  PluginModule --> ConfigurationModule
@@ -267,13 +270,23 @@ graph LR
267
270
  file_coinagerie_config_ts["coinagerie.config.ts"]
268
271
  file_eslint_config_ts["eslint.config.ts"]
269
272
  file_src_codependix_nx_module_ts["src/codependix-nx.module.ts"]
273
+ file_src_executors_gate_batch_executor_ts["src/executors/gate/batch-executor.ts"]
274
+ file_src_executors_gate_batch_executor_unit_test_ts["src/executors/gate/batch-executor.unit.test.ts"]
270
275
  file_src_executors_gate_executor_integration_test_ts["src/executors/gate/executor.integration.test.ts"]
271
276
  file_src_executors_gate_executor_ts["src/executors/gate/executor.ts"]
272
277
  file_src_executors_gate_executor_types_ts["src/executors/gate/executor.types.ts"]
273
278
  file_src_executors_gate_executor_unit_test_ts["src/executors/gate/executor.unit.test.ts"]
274
279
  file_src_executors_gate_loader_unit_test_ts["src/executors/gate/loader.unit.test.ts"]
280
+ file_src_executors_manifest_unit_test_ts["src/executors/manifest.unit.test.ts"]
275
281
  file_src_index_ts["src/index.ts"]
276
282
  file_src_index_unit_test_ts["src/index.unit.test.ts"]
283
+ file_src_modules_batch_batch_constants_ts["src/modules/batch/batch.constants.ts"]
284
+ file_src_modules_batch_batch_module_ts["src/modules/batch/batch.module.ts"]
285
+ file_src_modules_batch_batch_service_ts["src/modules/batch/batch.service.ts"]
286
+ file_src_modules_batch_batch_service_unit_test_ts["src/modules/batch/batch.service.unit.test.ts"]
287
+ file_src_modules_batch_batch_types_ts["src/modules/batch/batch.types.ts"]
288
+ file_src_modules_batch_batch_utilities_ts["src/modules/batch/batch.utilities.ts"]
289
+ file_src_modules_batch_batch_utilities_unit_test_ts["src/modules/batch/batch.utilities.unit.test.ts"]
277
290
  file_src_modules_gate_gate_constants_ts["src/modules/gate/gate.constants.ts"]
278
291
  file_src_modules_gate_gate_module_ts["src/modules/gate/gate.module.ts"]
279
292
  file_src_modules_gate_gate_service_ts["src/modules/gate/gate.service.ts"]
@@ -294,8 +307,18 @@ graph LR
294
307
  file_testing_setup_ts["testing/setup.ts"]
295
308
  file_vite_config_ts["vite.config.ts"]
296
309
  file_vitest_config_ts["vitest.config.ts"]
310
+ file_src_codependix_nx_module_ts --> file_src_modules_batch_batch_module_ts
297
311
  file_src_codependix_nx_module_ts --> file_src_modules_gate_gate_module_ts
298
312
  file_src_codependix_nx_module_ts --> file_src_modules_plugin_plugin_module_ts
313
+ file_src_executors_gate_batch_executor_ts --> file_src_executors_gate_executor_types_ts
314
+ file_src_executors_gate_batch_executor_ts --> file_src_modules_batch_batch_types_ts
315
+ file_src_executors_gate_batch_executor_ts --> file_src_modules_batch_batch_utilities_ts
316
+ file_src_executors_gate_batch_executor_ts --> file_src_modules_gate_gate_service_ts
317
+ file_src_executors_gate_batch_executor_ts --> file_src_modules_plugin_plugin_context_utilities_ts
318
+ file_src_executors_gate_batch_executor_unit_test_ts --> file_src_executors_gate_batch_executor_ts
319
+ file_src_executors_gate_batch_executor_unit_test_ts --> file_src_modules_batch_batch_service_ts
320
+ file_src_executors_gate_batch_executor_unit_test_ts --> file_src_modules_gate_gate_service_ts
321
+ file_src_executors_gate_executor_integration_test_ts --> file_src_executors_gate_batch_executor_ts
299
322
  file_src_executors_gate_executor_integration_test_ts --> file_src_executors_gate_executor_ts
300
323
  file_src_executors_gate_executor_integration_test_ts --> file_src_executors_gate_executor_types_ts
301
324
  file_src_executors_gate_executor_ts --> file_src_executors_gate_executor_types_ts
@@ -310,6 +333,21 @@ graph LR
310
333
  file_src_index_unit_test_ts --> file_src_index_ts
311
334
  file_src_index_unit_test_ts --> file_src_modules_plugin_plugin_service_ts
312
335
  file_src_index_unit_test_ts --> file_src_modules_plugin_plugin_types_ts
336
+ file_src_modules_batch_batch_module_ts --> file_src_modules_batch_batch_service_ts
337
+ file_src_modules_batch_batch_module_ts --> file_src_modules_gate_gate_module_ts
338
+ file_src_modules_batch_batch_service_ts --> file_src_modules_batch_batch_constants_ts
339
+ file_src_modules_batch_batch_service_ts --> file_src_modules_batch_batch_types_ts
340
+ file_src_modules_batch_batch_service_ts --> file_src_modules_batch_batch_utilities_ts
341
+ file_src_modules_batch_batch_service_ts --> file_src_modules_gate_gate_constants_ts
342
+ file_src_modules_batch_batch_service_ts --> file_src_modules_gate_gate_service_ts
343
+ file_src_modules_batch_batch_service_ts --> file_src_modules_gate_gate_types_ts
344
+ file_src_modules_batch_batch_service_unit_test_ts --> file_src_modules_batch_batch_service_ts
345
+ file_src_modules_batch_batch_service_unit_test_ts --> file_src_modules_batch_batch_types_ts
346
+ file_src_modules_batch_batch_service_unit_test_ts --> file_src_modules_gate_gate_service_ts
347
+ file_src_modules_batch_batch_service_unit_test_ts --> file_src_modules_gate_gate_types_ts
348
+ file_src_modules_batch_batch_service_unit_test_ts --> file_src_modules_plugin_plugin_service_ts
349
+ file_src_modules_batch_batch_types_ts --> file_src_modules_gate_gate_types_ts
350
+ file_src_modules_batch_batch_utilities_unit_test_ts --> file_src_modules_batch_batch_utilities_ts
313
351
  file_src_modules_gate_gate_module_ts --> file_src_modules_gate_gate_service_ts
314
352
  file_src_modules_gate_gate_module_ts --> file_src_modules_plugin_plugin_module_ts
315
353
  file_src_modules_gate_gate_service_ts --> file_src_modules_gate_gate_constants_ts
@@ -318,6 +356,7 @@ graph LR
318
356
  file_src_modules_gate_gate_service_unit_test_ts --> file_src_modules_gate_gate_service_ts
319
357
  file_src_modules_gate_gate_service_unit_test_ts --> file_src_modules_plugin_plugin_service_ts
320
358
  file_src_modules_plugin_plugin_context_utilities_ts --> file_src_codependix_nx_module_ts
359
+ file_src_modules_plugin_plugin_context_utilities_ts --> file_src_modules_batch_batch_service_ts
321
360
  file_src_modules_plugin_plugin_context_utilities_ts --> file_src_modules_gate_gate_service_ts
322
361
  file_src_modules_plugin_plugin_context_utilities_ts --> file_src_modules_plugin_plugin_constants_ts
323
362
  file_src_modules_plugin_plugin_context_utilities_ts --> file_src_modules_plugin_plugin_service_ts
@@ -348,36 +387,36 @@ graph LR
348
387
 
349
388
  ### Project
350
389
 
351
- ![Lines of Code](https://img.shields.io/badge/Lines_of_Code-3748-22c55e?style=flat-square)
352
- ![Repository Size](https://img.shields.io/badge/Repository_Size-141.40_kB-6b7280?style=flat-square)
353
- ![Folders](https://img.shields.io/badge/Folders-7-4a4a4a?style=flat-square)
354
- ![Source Files](https://img.shields.io/badge/Source_Files-34-3178c6?style=flat-square)
390
+ ![Lines of Code](https://img.shields.io/badge/Lines_of_Code-5615-22c55e?style=flat-square)
391
+ ![Repository Size](https://img.shields.io/badge/Repository_Size-202.71_kB-6b7280?style=flat-square)
392
+ ![Folders](https://img.shields.io/badge/Folders-8-4a4a4a?style=flat-square)
393
+ ![Source Files](https://img.shields.io/badge/Source_Files-44-3178c6?style=flat-square)
355
394
 
356
395
  ### TypeScript
357
396
 
358
- ![TypeScript Files](https://img.shields.io/badge/TypeScript_Files-33-3178c6?style=flat-square)
359
- ![Interfaces](https://img.shields.io/badge/Interfaces-13-0ea5e9?style=flat-square)
397
+ ![TypeScript Files](https://img.shields.io/badge/TypeScript_Files-43-3178c6?style=flat-square)
398
+ ![Interfaces](https://img.shields.io/badge/Interfaces-20-0ea5e9?style=flat-square)
360
399
  ![Generic Declarations](https://img.shields.io/badge/Generic_Declarations-0-0369a1?style=flat-square)
361
400
  ![Enums](https://img.shields.io/badge/Enums-0-f97316?style=flat-square)
362
- ![Decorators](https://img.shields.io/badge/Decorators-5-db2777?style=flat-square)
363
- ![Doc Comments](https://img.shields.io/badge/Doc_Comments-112-6366f1?style=flat-square)
401
+ ![Decorators](https://img.shields.io/badge/Decorators-7-db2777?style=flat-square)
402
+ ![Doc Comments](https://img.shields.io/badge/Doc_Comments-155-6366f1?style=flat-square)
364
403
  ![Static Methods](https://img.shields.io/badge/Static_Methods-0-166534?style=flat-square)
365
404
 
366
405
  ### JavaScript
367
406
 
368
407
  ![JavaScript Files](https://img.shields.io/badge/JavaScript_Files-1-f7df1e?style=flat-square)
369
- ![Test Files](https://img.shields.io/badge/Test_Files-9-10b981?style=flat-square)
370
- ![External Packages](https://img.shields.io/badge/External_Packages-14-8b5cf6?style=flat-square)
371
- ![Classes](https://img.shields.io/badge/Classes-5-7c3aed?style=flat-square)
372
- ![Functions](https://img.shields.io/badge/Functions-199-16a34a?style=flat-square)
373
- ![Methods](https://img.shields.io/badge/Methods-28-15803d?style=flat-square)
374
- ![Sync Functions](https://img.shields.io/badge/Sync_Functions-185-4ade80?style=flat-square)
375
- ![Async Functions](https://img.shields.io/badge/Async_Functions-42-059669?style=flat-square)
376
- ![Constants](https://img.shields.io/badge/Constants-145-dc2626?style=flat-square)
377
- ![Imports](https://img.shields.io/badge/Imports-122-0284c7?style=flat-square)
378
- ![Exported Symbols](https://img.shields.io/badge/Exported_Symbols-51-ea580c?style=flat-square)
379
- ![Comments](https://img.shields.io/badge/Comments-199-64748b?style=flat-square)
380
- ![Comment Lines](https://img.shields.io/badge/Comment_Lines-487-475569?style=flat-square)
408
+ ![Test Files](https://img.shields.io/badge/Test_Files-13-10b981?style=flat-square)
409
+ ![External Packages](https://img.shields.io/badge/External_Packages-16-8b5cf6?style=flat-square)
410
+ ![Classes](https://img.shields.io/badge/Classes-7-7c3aed?style=flat-square)
411
+ ![Functions](https://img.shields.io/badge/Functions-307-16a34a?style=flat-square)
412
+ ![Methods](https://img.shields.io/badge/Methods-41-15803d?style=flat-square)
413
+ ![Sync Functions](https://img.shields.io/badge/Sync_Functions-270-4ade80?style=flat-square)
414
+ ![Async Functions](https://img.shields.io/badge/Async_Functions-78-059669?style=flat-square)
415
+ ![Constants](https://img.shields.io/badge/Constants-233-dc2626?style=flat-square)
416
+ ![Imports](https://img.shields.io/badge/Imports-171-0284c7?style=flat-square)
417
+ ![Exported Symbols](https://img.shields.io/badge/Exported_Symbols-69-ea580c?style=flat-square)
418
+ ![Comments](https://img.shields.io/badge/Comments-252-64748b?style=flat-square)
419
+ ![Comment Lines](https://img.shields.io/badge/Comment_Lines-664-475569?style=flat-square)
381
420
  ![TODO Comments](https://img.shields.io/badge/TODO_Comments-0-ca8a04?style=flat-square)
382
421
 
383
422
  ### Python
@@ -398,16 +437,16 @@ graph LR
398
437
  ### JSON
399
438
 
400
439
  ![JSON Files](https://img.shields.io/badge/JSON_Files-6-a16207?style=flat-square)
401
- ![JSON Lines](https://img.shields.io/badge/JSON_Lines-220-ca8a04?style=flat-square)
440
+ ![JSON Lines](https://img.shields.io/badge/JSON_Lines-222-ca8a04?style=flat-square)
402
441
  ![JSON Objects](https://img.shields.io/badge/JSON_Objects-51-7c3aed?style=flat-square)
403
442
  ![JSON Arrays](https://img.shields.io/badge/JSON_Arrays-14-8b5cf6?style=flat-square)
404
- ![JSON Properties](https://img.shields.io/badge/JSON_Properties-142-0284c7?style=flat-square)
405
- ![JSON Strings](https://img.shields.io/badge/JSON_Strings-123-16a34a?style=flat-square)
443
+ ![JSON Properties](https://img.shields.io/badge/JSON_Properties-144-0284c7?style=flat-square)
444
+ ![JSON Strings](https://img.shields.io/badge/JSON_Strings-124-16a34a?style=flat-square)
406
445
  ![JSON Numbers](https://img.shields.io/badge/JSON_Numbers-1-059669?style=flat-square)
407
- ![JSON Booleans](https://img.shields.io/badge/JSON_Booleans-7-0ea5e9?style=flat-square)
446
+ ![JSON Booleans](https://img.shields.io/badge/JSON_Booleans-8-0ea5e9?style=flat-square)
408
447
  ![JSON Nulls](https://img.shields.io/badge/JSON_Nulls-0-64748b?style=flat-square)
409
448
  ![JSON Items](https://img.shields.io/badge/JSON_Items-48-475569?style=flat-square)
410
- ![JSON Nodes](https://img.shields.io/badge/JSON_Nodes-196-dc2626?style=flat-square)
449
+ ![JSON Nodes](https://img.shields.io/badge/JSON_Nodes-198-dc2626?style=flat-square)
411
450
  ![JSON Max Depth](https://img.shields.io/badge/JSON_Max_Depth-5-ea580c?style=flat-square)
412
451
 
413
452
  ### YAML
@@ -488,14 +527,14 @@ graph LR
488
527
 
489
528
  ### Conventions
490
529
 
491
- ![Module Files](https://img.shields.io/badge/Module_Files-3-7c3aed?style=flat-square)
492
- ![Service Files](https://img.shields.io/badge/Service_Files-2-0284c7?style=flat-square)
530
+ ![Module Files](https://img.shields.io/badge/Module_Files-4-7c3aed?style=flat-square)
531
+ ![Service Files](https://img.shields.io/badge/Service_Files-3-0284c7?style=flat-square)
493
532
  ![Command Files](https://img.shields.io/badge/Command_Files-0-16a34a?style=flat-square)
494
- ![Constants Files](https://img.shields.io/badge/Constants_Files-2-ea580c?style=flat-square)
495
- ![Types Files](https://img.shields.io/badge/Types_Files-3-db2777?style=flat-square)
496
- ![Utilities Files](https://img.shields.io/badge/Utilities_Files-3-0ea5e9?style=flat-square)
533
+ ![Constants Files](https://img.shields.io/badge/Constants_Files-3-ea580c?style=flat-square)
534
+ ![Types Files](https://img.shields.io/badge/Types_Files-4-db2777?style=flat-square)
535
+ ![Utilities Files](https://img.shields.io/badge/Utilities_Files-4-0ea5e9?style=flat-square)
497
536
  ![TypeORM Entities](https://img.shields.io/badge/TypeORM_Entities-0-059669?style=flat-square)
498
- ![Unit Tests](https://img.shields.io/badge/Unit_Tests-8-ca8a04?style=flat-square)
537
+ ![Unit Tests](https://img.shields.io/badge/Unit_Tests-12-ca8a04?style=flat-square)
499
538
  ![Integration Tests](https://img.shields.io/badge/Integration_Tests-1-7c3aed?style=flat-square)
500
539
  ![End To End Tests](https://img.shields.io/badge/End_To_End_Tests-0-0284c7?style=flat-square)
501
540
  ![CSS Comment Budget](https://img.shields.io/badge/CSS_Comment_Budget-0-16a34a?style=flat-square)
@@ -533,23 +572,23 @@ graph LR
533
572
  ### Markdown
534
573
 
535
574
  ![Markdown Files](https://img.shields.io/badge/Markdown_Files-2-083fa1?style=flat-square)
536
- ![Markdown Lines](https://img.shields.io/badge/Markdown_Lines-529-1f6feb?style=flat-square)
575
+ ![Markdown Lines](https://img.shields.io/badge/Markdown_Lines-571-1f6feb?style=flat-square)
537
576
  ![H1](https://img.shields.io/badge/H1-1-7c3aed?style=flat-square)
538
- ![H2](https://img.shields.io/badge/H2-55-8b5cf6?style=flat-square)
539
- ![H3](https://img.shields.io/badge/H3-66-a78bfa?style=flat-square)
577
+ ![H2](https://img.shields.io/badge/H2-57-8b5cf6?style=flat-square)
578
+ ![H3](https://img.shields.io/badge/H3-69-a78bfa?style=flat-square)
540
579
  ![H4](https://img.shields.io/badge/H4-0-c4b5fd?style=flat-square)
541
580
  ![H5](https://img.shields.io/badge/H5-0-ddd6fe?style=flat-square)
542
581
  ![H6](https://img.shields.io/badge/H6-0-ede9fe?style=flat-square)
543
- ![Paragraphs](https://img.shields.io/badge/Paragraphs-121-64748b?style=flat-square)
544
- ![Lists](https://img.shields.io/badge/Lists-63-16a34a?style=flat-square)
545
- ![List Items](https://img.shields.io/badge/List_Items-110-22c55e?style=flat-square)
582
+ ![Paragraphs](https://img.shields.io/badge/Paragraphs-128-64748b?style=flat-square)
583
+ ![Lists](https://img.shields.io/badge/Lists-66-16a34a?style=flat-square)
584
+ ![List Items](https://img.shields.io/badge/List_Items-116-22c55e?style=flat-square)
546
585
  ![Task List Items](https://img.shields.io/badge/Task_List_Items-0-4ade80?style=flat-square)
547
586
  ![Tables](https://img.shields.io/badge/Tables-0-0284c7?style=flat-square)
548
587
  ![Table Rows](https://img.shields.io/badge/Table_Rows-0-0ea5e9?style=flat-square)
549
- ![Links](https://img.shields.io/badge/Links-23-059669?style=flat-square)
588
+ ![Links](https://img.shields.io/badge/Links-25-059669?style=flat-square)
550
589
  ![Images](https://img.shields.io/badge/Images-0-10b981?style=flat-square)
551
590
  ![Code Blocks](https://img.shields.io/badge/Code_Blocks-4-dc2626?style=flat-square)
552
- ![Inline Code](https://img.shields.io/badge/Inline_Code-53-ef4444?style=flat-square)
591
+ ![Inline Code](https://img.shields.io/badge/Inline_Code-61-ef4444?style=flat-square)
553
592
  ![Block Quotes](https://img.shields.io/badge/Block_Quotes-0-ca8a04?style=flat-square)
554
593
  ![Thematic Breaks](https://img.shields.io/badge/Thematic_Breaks-0-a16207?style=flat-square)
555
594
  <!-- codometer:end -->
@@ -560,25 +599,42 @@ graph LR
560
599
 
561
600
  The words this project uses that the root glossary does not define, regenerated with `nx run codependix-nx:coinagerie-check:write`.
562
601
 
563
- - **abort**:
564
- - **argv**:
565
- - **boundary**:
566
- - **breadth**:
567
- - **chain**:
568
- - **follow**:
569
- - **immediate**:
570
- - **inject**:
571
- - **misname**:
572
- - **realpath**:
573
- - **registration**:
574
- - **selection**:
575
- - **stdio**:
576
- - **strictest**:
577
- - **symlink**:
578
- - **through**:
579
- - **undeclared**:
580
- - **unresolved**:
581
- - **unscoped**:
602
+ - **abort**: NestFactory option set false so a failed container boot throws to the caller instead of exiting the process.
603
+ - **alone**: Judged by itself, as a task that names other projects or tags is, running separately so a failure costs its batch peers nothing.
604
+ - **argv**: Argument array of the spawned command line, which the gate builds from its project, configuration, and mode flags.
605
+ - **batch**: Group of gate tasks Nx hands to one executor call, which runs one boundary check and reads each project's verdict from it.
606
+ - **beta**: Placeholder project name used in fixtures for a second dependency in gate and batch executor tests.
607
+ - **boundary**: Codependix rule check run per project, failing the gate when a dependency graph breaks a configured rule charged to it.
608
+ - **breadth**: Count of calls one function makes, which callidescope caps per callable so the plugin merges map and filter into one pass.
609
+ - **budget**: Comment-length allowance codometer enforces per language, shown as the Comment Budget badges in this package's readme.
610
+ - **chain**: Ordered sequence of tsconfig extends bases the plugin walks from the root tsconfig, each reached file becoming a cache input.
611
+ - **charge**: Assign a boundary finding to the project it belongs to, so only a finding charged to a project fails that project's gate.
612
+ - **cycle**: Chain of projects or modules that depend on each other in a loop, which an acyclic boundary rule reports as a violation.
613
+ - **explain**: Produce the report of why a project failed, by running that project alone again to get exactly what a single run prints.
614
+ - **follow**: Traversal verb for walking an external dependency's own dependencies and tsconfig extends links, so each reached file joins the inputs.
615
+ - **immediate**: Node setImmediate call the gate unit test uses to fire fake child-process events after the spawn returns.
616
+ - **inject**: Constructor injection the NestJS container uses to hand providers to services, which needs decorator metadata from the swc loader.
617
+ - **misname**: Test fixture for a workspace dependency whose folder name and manifest name disagree, so location must fail rather than match.
618
+ - **parallelism**: Nx option, set true in the gate batch worker context, letting it run many project tasks within one call.
619
+ - **pipe**: Stdio mode that captures a child process's output so the batch service can read its report and keep its error text.
620
+ - **prefer**: Stem of prefers, as in a named selection winning over the target's own project when both could be gated.
621
+ - **realpath**: Node realpathSync call that resolves symlinks to canonical paths, so workspace and package directories compare equal.
622
+ - **registration**: The plugin's entry in nx.json, whose options such as configurationPath the gate and inference read back at run time.
623
+ - **selection**: The projects or tags a gate run is limited to, which the gate uses to decide whether it judges only its own project.
624
+ - **settle**: Resolve a batch task outright with its verdict or its failure reason, instead of rejecting, so one failed run costs peers nothing.
625
+ - **single**: One project judged by a run of its own, the command line a failing batch task is rerun with to print its own report.
626
+ - **stdio**: Spawn option setting child process streams, here ignoring stdin and piping stdout and stderr so the gate forwards output.
627
+ - **strictest**: Test fixture scoped package provided as a tsconfig extends base, exercising a registry-declared external dependency input.
628
+ - **subpath**: Path under a package root, resolved through an exports map to find the file a package entry point names.
629
+ - **symlink**: Symlinked workspace package directory the tests create under node_modules, verifying the plugin follows links to real package locations.
630
+ - **terminal**: Stem of terminalOutput, the report text a batch task returns so Nx can cache it and the executor can print it.
631
+ - **through**: Preposition used in docs and code to describe resolving a package's entry through its export, manifest, or extends chain.
632
+ - **uncacheable**: Selection Nx cannot hash as a cached task, which the gate refuses with an error rather than judging and replaying it.
633
+ - **undeclared**: Classification for a tsconfig base package that the root package.json does not declare, so its input is skipped with a warning.
634
+ - **unresolved**: Workspace dependency the plugin could not locate, collected into a set and reported as a warning rather than failing inference.
635
+ - **unscoped**: Test fixture for an unscoped package provided as a tsconfig extends base, covering the bare-name case of external dependency resolution.
636
+ - **verdict**: Judgement a gate reaches about a project's boundaries, decided by the codependix cli and replayed from the Nx cache.
637
+ - **violation**: Entry in a boundary report naming an edge or cycle that breaks a declared rule, which the batch maps to one project.
582
638
 
583
639
  <!-- coinagerie:end -->
584
640
 
@@ -590,10 +646,10 @@ Call stacks traced through `projects/ic-suite/codependix/codependix-nx`, deepest
590
646
 
591
647
  | Measure | Value |
592
648
  | --- | --- |
593
- | Callables | 68 |
594
- | Files | 22 |
595
- | Calls traced | 79 |
596
- | Call stacks | 2 |
649
+ | Callables | 95 |
650
+ | Files | 28 |
651
+ | Calls traced | 121 |
652
+ | Call stacks | 3 |
597
653
  | Deepest stack | 6 |
598
654
  | Stacks through recursion | 0 |
599
655
  | Unfollowable calls | 6 |
@@ -625,14 +681,30 @@ What this project is judged against, as declared in its own `callidescope.config
625
681
  ↳ Reads a package directory's manifest, or an empty one when there is none or it cannot be parsed β€” which leaves that…
626
682
  ```
627
683
 
628
- **2. `gateExecutor`** β€” depth β‰₯ 6 Β· orphan-root
684
+ **2. `gateBatchExecutor`** β€” depth β‰₯ 6 Β· orphan-root
685
+
686
+ ```text
687
+ πŸš€ gateBatchExecutor(…): Promise<Record<string, GateBatchTaskResult>> [projects/ic-suite/codependix/codependix-nx/src/executors/gate/batch-executor.ts:33]
688
+ ↳ Judges every gate task Nx batched for this executor from as few command line runs as it can.
689
+ └─> resolveTask(…): ResolvedTask [projects/ic-suite/codependix/codependix-nx/src/executors/gate/batch-executor.ts:93]
690
+ ↳ Resolves one task's configuration path, or the failure that earns it.
691
+ └─> GateService.resolveConfigurationPath(args: { configuration?: string | undefined; workspaceRoot: string; }): string [projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:186]
692
+ ↳ Resolves the configuration path one gate runs with.
693
+ └─> PluginService.resolvePluginOptions(args: ResolvePluginOptionsArguments): CodependixPluginOptions [projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin.service.ts:156]
694
+ ↳ Resolves the effective plugin options from an untrusted value. `configurationPath` is required and never searched for:…
695
+ └─> ConfigurationService.requireConfigurationPath(configurationPath: string | undefined, surface: string): string [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:309]
696
+ ↳ Returns the main configuration path, refusing one that is missing.
697
+ └─> ConfigurationPathRequiredError.constructor(surface: string): ConfigurationPathRequiredError [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.constants.ts:304]
698
+ ```
699
+
700
+ **3. `gateExecutor`** β€” depth β‰₯ 6 Β· orphan-root
629
701
 
630
702
  ```text
631
703
  πŸš€ gateExecutor(…): Promise<{ success: boolean; }> [projects/ic-suite/codependix/codependix-nx/src/executors/gate/executor.ts:21]
632
704
  ↳ Fails one project's task when a codependix boundary finding is charged to it.
633
- └─> GateService.run(args: RunGateArguments): Promise<boolean> [projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:215]
705
+ └─> GateService.run(args: RunGateArguments): Promise<boolean> [projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:240]
634
706
  ↳ Runs one gate, and settles on whether it passed.
635
- └─> GateService.resolveConfigurationPath(args: { configuration?: string | undefined; workspaceRoot: string; }): string [projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:161]
707
+ └─> GateService.resolveConfigurationPath(args: { configuration?: string | undefined; workspaceRoot: string; }): string [projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:186]
636
708
  ↳ Resolves the configuration path one gate runs with.
637
709
  └─> PluginService.resolvePluginOptions(args: ResolvePluginOptionsArguments): CodependixPluginOptions [projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin.service.ts:156]
638
710
  ↳ Resolves the effective plugin options from an untrusted value. `configurationPath` is required and never searched for:…
@@ -645,36 +717,50 @@ What this project is judged against, as declared in its own `callidescope.config
645
717
 
646
718
  | Callable | Breadth | Calls directly | Location |
647
719
  | --- | --- | --- | --- |
648
- | `GateService.run` | 5 | `GateService.resolveSelection`, `GateService.judgesOwnProject`, `GateService.buildCommandArguments`, `GateService.resolveConfigurationPath`, `GateService.spawnCommandLine` | `projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:215` |
720
+ | `GateService.run` | 5 | `GateService.resolveSelection`, `GateService.judgesOwnProject`, `GateService.buildCommandArguments`, `GateService.resolveConfigurationPath`, `GateService.spawnCommandLine` | `projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:240` |
721
+ | `BatchService.judgeRun` | 5 | `BatchService.captureCommandLine`, `BatchService.failAll`, `readChargedProjects`, `BatchService.some(…)`, `BatchService.explainFailure` | `projects/ic-suite/codependix/codependix-nx/src/modules/batch/batch.service.ts:224` |
649
722
  | `resolveToolInputs` | 5 | `locatePackage`, `warnUnresolved`, `isInsideWorkspace`, `resolveWorkspaceInputs`, `resolveExternalInputs` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:65` |
650
- | `anonymous` | 5 | `resolvePluginService`, `PluginService.inferTargets`, `resolveToolInputs`, `resolveTsconfigInputs`, `flatMap(…)` | `projects/ic-suite/codependix/codependix-nx/src/index.ts:45` |
651
723
 
652
724
  <details>
653
- <summary>27 more callables</summary>
725
+ <summary>41 more callables</summary>
654
726
 
655
727
  | Callable | Breadth | Calls directly | Location |
656
728
  | --- | --- | --- | --- |
729
+ | `anonymous` | 5 | `resolvePluginService`, `PluginService.inferTargets`, `resolveToolInputs`, `resolveTsconfigInputs`, `flatMap(…)` | `projects/ic-suite/codependix/codependix-nx/src/index.ts:45` |
730
+ | `gateBatchExecutor` | 5 | `resolveBatchService`, `resolveGateService`, `resolveTask`, `BatchService.runBatch`, `printFailures` | `projects/ic-suite/codependix/codependix-nx/src/executors/gate/batch-executor.ts:33` |
657
731
  | `PluginService.readRegisteredOptions` | 4 | `PluginService.toRecord`, `PluginService.isUnknownArray`, `PluginService.find(…)`, `PluginService.map(…)` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin.service.ts:134` |
658
- | `GateService.resolveConfigurationPath` | 4 | `ConfigurationService.requireConfigurationPath`, `PluginService.resolvePluginOptions`, `PluginService.readRegisteredOptions`, `GateService.readNxConfiguration` | `projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:161` |
732
+ | `GateService.resolveConfigurationPath` | 4 | `ConfigurationService.requireConfigurationPath`, `PluginService.resolvePluginOptions`, `PluginService.readRegisteredOptions`, `GateService.readNxConfiguration` | `projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:186` |
733
+ | `BatchService.groupOrSettle` | 4 | `GateService.resolveSelection`, `GateService.judgesOwnProject`, `BatchService.runAlone`, `describeError` | `projects/ic-suite/codependix/codependix-nx/src/modules/batch/batch.service.ts:164` |
659
734
  | `collectWorkspacePackages` | 4 | `map(…)`, `filter(…)`, `readDependencies`, `locatePackage` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:103` |
660
735
  | `followExtendsChain` | 4 | `readRegistryDependencies`, `readExtends`, `resolveExtendedBase`, `warnSkipped` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-tsconfig.utilities.ts:89` |
661
736
  | `resolveExtendedBase` | 4 | `resolvePathBase`, `resolvePackageBase`, `isInsideWorkspace`, `readInstalledPackageName` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-tsconfig.utilities.ts:204` |
662
737
  | `PluginService.selectProjectRoots` | 3 | `PluginService.filter(…)`, `PluginService.map(…)`, `PluginService.filter(…)` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin.service.ts:65` |
663
738
  | `PluginService.inferTargets` | 3 | `PluginService.resolvePluginOptions`, `PluginService.map(…)`, `PluginService.selectProjectRoots` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin.service.ts:99` |
664
739
  | `PluginService.resolvePluginOptions` | 3 | `PluginService.toRecord`, `ConfigurationService.requireConfigurationPath`, `PluginService.readString` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin.service.ts:156` |
665
- | `GateService.readNameList` | 3 | `GateService.filter(…)`, `GateService.map(…)`, `GateService.flatMap(…)` | `projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:70` |
666
- | `GateService.anonymous` | 3 | `GateService.on(…)`, `GateService.on(…)`, `GateService.on(…)` | `projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:108` |
740
+ | `GateService.readNameList` | 3 | `GateService.filter(…)`, `GateService.map(…)`, `GateService.flatMap(…)` | `projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:60` |
741
+ | `GateService.anonymous` | 3 | `GateService.on(…)`, `GateService.on(…)`, `GateService.on(…)` | `projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:98` |
742
+ | `readChargedProjects` | 3 | `extractReportText`, `isRecord`, `isList` | `projects/ic-suite/codependix/codependix-nx/src/modules/batch/batch.utilities.ts:26` |
743
+ | `splitProjects` | 3 | `from(…)`, `every(…)`, `map(…)` | `projects/ic-suite/codependix/codependix-nx/src/modules/batch/batch.utilities.ts:78` |
744
+ | `BatchService.planShares` | 3 | `splitProjects`, `BatchService.map(…)`, `GateService.buildBatchArguments` | `projects/ic-suite/codependix/codependix-nx/src/modules/batch/batch.service.ts:279` |
667
745
  | `resolveExternalInputs` | 3 | `filter(…)`, `map(…)`, `readDependencies` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:197` |
668
746
  | `resolveWorkspaceInputs` | 3 | `collectWorkspacePackages`, `warnUnresolved`, `flatMap(…)` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:209` |
669
747
  | `readRegistryDependencies` | 3 | `map(…)`, `filter(…)`, `readDependencies` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-tsconfig.utilities.ts:180` |
748
+ | `BatchService.runAlone` | 2 | `BatchService.captureCommandLine`, `GateService.buildBatchArguments` | `projects/ic-suite/codependix/codependix-nx/src/modules/batch/batch.service.ts:325` |
749
+ | `BatchService.runGroup` | 2 | `BatchService.planShares`, `BatchService.judgeRun` | `projects/ic-suite/codependix/codependix-nx/src/modules/batch/batch.service.ts:358` |
750
+ | `BatchService.runBatch` | 2 | `BatchService.groupOrSettle`, `BatchService.runGroup` | `projects/ic-suite/codependix/codependix-nx/src/modules/batch/batch.service.ts:390` |
670
751
  | `readDependencies` | 2 | `readManifest`, `toRecord` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:41` |
671
752
  | `resolveTsconfigInputs` | 2 | `followExtendsChain`, `map(…)` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-tsconfig.utilities.ts:42` |
753
+ | `resolveTask` | 2 | `GateService.resolveConfigurationPath`, `describeError` | `projects/ic-suite/codependix/codependix-nx/src/executors/gate/batch-executor.ts:93` |
672
754
  | `gateExecutor` | 2 | `resolveGateService`, `GateService.run` | `projects/ic-suite/codependix/codependix-nx/src/executors/gate/executor.ts:21` |
673
755
  | `PluginService.map(…)` | 1 | `PluginService.toRecord` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin.service.ts:142` |
674
- | `GateService.spawnCommandLine` | 1 | `GateService.anonymous` | `projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:104` |
675
- | `GateService.resolveSelection` | 1 | `GateService.readNameList` | `projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:187` |
676
- | `resolveGateService` | 1 | `resolvePluginContext` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-context.utilities.ts:16` |
677
- | `resolvePluginService` | 1 | `resolvePluginContext` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-context.utilities.ts:23` |
756
+ | `GateService.spawnCommandLine` | 1 | `GateService.anonymous` | `projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:94` |
757
+ | `GateService.buildBatchArguments` | 1 | `GateService.buildCommandArguments` | `projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:124` |
758
+ | `GateService.resolveSelection` | 1 | `GateService.readNameList` | `projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:212` |
759
+ | `BatchService.explainFailure` | 1 | `BatchService.captureCommandLine` | `projects/ic-suite/codependix/codependix-nx/src/modules/batch/batch.service.ts:122` |
760
+ | `BatchService.failAll` | 1 | `BatchService.map(…)` | `projects/ic-suite/codependix/codependix-nx/src/modules/batch/batch.service.ts:145` |
761
+ | `resolveBatchService` | 1 | `resolvePluginContext` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-context.utilities.ts:17` |
762
+ | `resolveGateService` | 1 | `resolvePluginContext` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-context.utilities.ts:24` |
763
+ | `resolvePluginService` | 1 | `resolvePluginContext` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-context.utilities.ts:31` |
678
764
  | `locatePackage` | 1 | `readManifest` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:145` |
679
765
  | `flatMap(…)` | 1 | `map(…)` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:224` |
680
766
  | `readExtends` | 1 | `filter(…)` | `projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-tsconfig.utilities.ts:133` |