platform-main — code-review audit pipeline
Every module gets a full pass — one file reviewed, one GitHub sub-issue documenting the finding (even when the finding is "none"), one PR, one merge by the repo owner, before the next file starts. Tried opening several PRs in parallel once; every PR after the first needed a rebase because they all touched the same tracking table, so the process stayed sequential on purpose.
store, all 3 real bugs shared one shape — a function's
top-level entry point was missing a null/undefined
guard that its own recursive or nested-value handling already had
(freeze(), getUnserializable(),
combineReducers()). Once that pattern was named, every later
module got checked specifically for the same asymmetry — not found again
yet, but worth checking every time rather than assuming it was a one-off.
27/279/918/1812/1211/114/4selectSignal()'s public
overloads used two types that were never exported, so the
barrel never re-exported them despite the public method needing them
10/10error
notification) plus 2 barrel-export gaps fixed — 7 files clean
4/4MapResponseObserver/TapResponseObserver were
never exported from their own files
16/16ng add error surfacing a raw
TypeError instead of a clear message; a
findModuleFromOptions auto-detect path that could never run
because every caller guarded the call itself; a missing-workspace-file
error surfacing a confusing
Could not find (undefined) instead of a clear message;
addReducerToActionReducerMap crashing on a
reducers/index.ts with any typed declaration ordered before
the ActionReducerMap-typed one;
visitDecorator handing callers a
ClassExpression typed as a ClassDeclaration; a
cross-file config path built with OS-native separators, breaking on
Windows; and replaceImport leaving a dangling comma) plus 2
test-coverage gaps closed, 13 barrel-export gaps closed across 6 files
(the largest barrel-gap finding of any module in this audit), and 2
dead-code/vestigial-comment cleanups
18/18deep-signal.ts a state property named
set/update/asReadonly silently
and permanently broke patchState, fixed via a side
WeakMap cache instead of writing the deep-signal cache
directly onto the underlying writable signal, and
with-linked-state.ts a linked slice aliased its source
slice, so writing it silently wrote the source;
state-source.ts a quadratic getState and three
watchState registration bugs;
with-hooks.ts hooks called without their receiver;
with-props.ts and with-state.ts a class
instance passed in now warns; with-computed.ts a quadratic
build; ts-helpers.ts and
signal-store-models.ts type-level gaps;
signal-store-assertions.ts a false-positive dev-mode
warning; signal-store-feature.ts a parameter-name typo in a
public overload; plus index.ts three types missing from the
barrel, 2 test-coverage gaps closed (signal-store.ts,
with-feature.ts), and 4 files with no findings of their own
25/25action/index.ts the default output had an unused
props import and two whitespace-only lines, and a missing
name crashed with a raw TypeError because
schema.json did not require it; both fixed, plus a coverage
gap closed; action/schema.ts prefix was
declared required although it has a default, plus three wrong doc
comments, all fixed; component-store/index.ts
--component also set module through a shared
-m alias, so a file holding both a component and its
NgModule got the store twice, a missing name crashed, and the generated
store had a stray semicolon, all fixed;
component-store/schema.ts two wrong doc comments fixed;
container/index.ts the generated spec did not compile with
default options, plus three schema defects, all fixed;
container/schema.ts the declared
stateInterface did nothing, now types the store;
data/index.ts the generated service spec failed when run,
fixed; data/schema.ts four wrong doc comments fixed;
effect/index.ts a broken NgModule import, nameless files
from a missing name and unclean output, all fixed;
effect/schema.ts name typed required though
optional by design, fixed; entity/index.ts failed in a
standalone app, fixed; entity/schema.ts seven doc comments
fixed; feature/index.ts entity-mode effects that did not
compile, fixed; feature/schema.ts doc comments fixed;
ng-add/index.ts a duplicate collection entry on re-run,
fixed; ng-add/schema.ts a standing lint warning fixed;
ngrx-push-migration/index.ts a migration that broke every
app it touched, fixed; ngrx-push-migration/schema.ts a
standing lint warning fixed; reducer/index.ts uncompilable
default output, broken nested registrations and the standalone-app
failure, fixed; reducer/schema.ts nine doc comments fixed;
selector/index.ts unused-import-only output and an empty
test, fixed; selector/schema.ts a missing name prompt,
fixed; store/index.ts the standalone-app failure and unused
imports, fixed; store/schema.ts an optional-by-design
name typed required, fixed; src/index.ts the
empty entry point documented, its dangling types field
tracked in #478
61/61actions/entity-action-factory.ts a throw test that never
reached the check it named, fixed;
actions/entity-action-guard.ts a garbled and two
context-free error messages, and TypeError crashes on
malformed payloads, fixed;
actions/entity-action-operators.ts
ofEntityType(undefined) selected the non-entity actions
instead of the entity ones, fixed; actions/entity-action.ts
types only, one undocumented option documented;
actions/entity-cache-action.ts SaveEntities
wrote the tag onto the caller's change set, fixed;
actions/entity-cache-change-set.ts a delete of key
0 silently dropped from a save, fixed;
actions/entity-op.ts no defect, its op pairing now checked
by a spec; actions/merge-strategy.ts no findings;
actions/update-response-data.ts no defects;
dataservices/data-service-error.ts a missing error crashed
it, and object-body HTTP errors lost their message, fixed;
dataservices/default-data-service-config.ts no defects;
dataservices/default-data.service.ts queryParams dropped
when httpParams given, fixed;
dataservices/entity-cache-data.service.ts a timeout escaped
the error handler, fixed;
dataservices/entity-data.service.ts an entity named
constructor got a built-in function, fixed;
dataservices/http-url-generator.ts the root was lowercased,
fixed; dataservices/interfaces.ts no defects;
dataservices/persistence-result-handler.service.ts no
defects; dispatchers/entity-cache-dispatcher.ts a
correlation id of 0 could not be canceled, fixed;
dispatchers/entity-commands.ts no defects;
dispatchers/entity-dispatcher-base.ts
loadWithQuery merged instead of replacing, fixed;
dispatchers/entity-dispatcher-default-options.ts no
defects; dispatchers/entity-dispatcher-factory.ts a
subscription outlived ngOnDestroy, fixed;
dispatchers/entity-dispatcher.ts
PersistenceCanceled now an Error;
effects/entity-cache-effects.ts an optimistic save answered
with no content never reported success, fixed;
effects/entity-effects-scheduler.ts no defects;
effects/entity-effects.ts no defects;
entity-data-config.ts
initialEntityCacheState was ignored, fixed;
entity-data-without-effects.module.ts no defects;
entity-data.module.ts no code defect, the effects
requirement documented;
entity-metadata/entity-definition.service.ts an entity
named constructor got a built-in function, fixed;
entity-metadata/entity-definition.ts it modified the
caller's metadata, fixed;
entity-metadata/entity-filters.ts a global RegExp skipped
matches, fixed; entity-metadata/entity-metadata.ts reserved
state names now rejected, fixed;
entity-services/entity-collection-service-base.ts four
commands dropped their options, fixed;
entity-services/entity-collection-service-elements-factory.ts
no defects, coverage gap closed;
entity-services/entity-collection-service-factory.ts
custom selectors$ typed, fixed;
entity-services/entity-collection-service.ts custom
selectors$ now on the service, fixed;
entity-services/entity-services-base.ts prototype-free,
trimmed service registry, fixed;
entity-services/entity-services-elements.ts root-store docs
fixed, spec added;
entity-services/entity-services.ts register-by-name in the
contract, fixed; index.ts ENTITY_EFFECTS_SCHEDULER now
exported, fixed; provide-entity-data.ts directly provided
meta-reducers kept, fixed; reducers/constants.ts custom
cache name in any provider order, fixed;
reducers/entity-cache-reducer.ts reducer errors no longer
stop the store, fixed; reducers/entity-cache.ts no defects,
docs added;
reducers/entity-change-tracker-base.ts preserve-changes
merges fixed; reducers/entity-change-tracker.ts no defects,
docs fixed; reducers/entity-collection-creator.ts no
defects, tests tightened;
reducers/entity-collection-reducer-methods.ts batch deletes
reach the server, fixed;
reducers/entity-collection-reducer-registry.ts
trimmed, prototype-free registry, fixed;
reducers/entity-collection-reducer.ts own methods only,
fixed; reducers/entity-collection.ts no defects, docs
fixed; selectors/entity-cache-selector.ts no defects,
coverage gap closed; selectors/entity-selectors$.ts no
stale error replay, fixed;
selectors/entity-selectors.ts selector-name clashes
rejected, fixed; utils/correlation-id-generator.ts no
defects, docs fixed; utils/default-logger.ts falsy values
logged, fixed; utils/default-pluralizer.ts "-es" rule
fixed; utils/guid-fns.ts time part always 12 digits, fixed;
utils/interfaces.ts plural names token typed, fixed;
utils/utilities.ts no defects, coverage gap closed
55/55configs/all-type-checked.ts no defects, type-information
requirement documented; configs/all.ts no defects,
exact-rules test added; configs/component-store.ts no
defects, exact-rules test added;
configs/effects-type-checked.ts no defects, exact-rules
test added; configs/effects.ts no defects, exact-rules test
added; configs/operators.ts no defects, exact-rules test
added; configs/signals-type-checked.ts no defects,
exact-rules test added; configs/signals.ts no defects,
exact-rules test added; configs/store.ts no defects,
exact-rules test added; index.ts 1 bug fixed (default
export vs preset plugin); rule-creator.ts no defects,
docs-URL test added;
avoid-combining-component-store-selectors.ts 2 bugs fixed;
avoid-mapping-component-store-selectors.ts 2 bugs fixed;
require-super-ondestroy.ts 3 bugs fixed;
updater-explicit-return-type.ts message fixed, follow-up
#649; avoid-cyclic-effects.ts 3 bugs fixed (functional
effects); no-dispatch-in-effects.ts 1 bug fixed (functional
effects); no-effects-in-providers.ts 2 bugs fixed (broken
auto-fix, provideEffects);
no-multiple-actions-in-effects.ts 2 bugs fixed;
prefer-action-creator-in-of-type.ts 2 bugs fixed;
prefer-effect-callback-in-block-statement.ts 1 bug fixed
(auto-fix); use-effects-lifecycle-interface.ts 3 bugs
fixed; rules/index.ts no defects;
prefer-concat-latest-from.ts 2 bugs fixed (functional
effects, fix); enforce-type-call.ts 1 bug fixed;
prefer-protected-state.ts 1 bug fixed (suggestion);
signal-state-no-arrays-at-root-level.ts 2 bugs fixed;
signal-store-feature-should-use-generic-type.ts 3 bugs
fixed; with-state-no-arrays-at-root-level.ts 2 bugs fixed;
avoid-combining-selectors.ts 2 bugs fixed;
avoid-dispatching-multiple-actions-sequentially.ts 2 bugs
fixed; avoid-duplicate-actions-in-reducer.ts 3 bugs fixed;
avoid-mapping-selectors.ts 2 bugs fixed;
good-action-hygiene.ts 2 bugs fixed;
no-multiple-global-stores.ts 2 bugs fixed (inject());
no-reducer-in-key-names.ts 2 bugs fixed;
no-store-subscription.ts 2 bugs fixed;
no-typed-global-store.ts 1 bug fixed;
on-function-explicit-return-type.ts 1 bug fixed
(suggestion); prefer-action-creator-in-dispatch.ts 2 bugs
fixed; prefer-action-creator.ts 1 bug fixed;
prefer-inline-action-props.ts 1 bug fixed (action groups);
prefer-one-generic-in-create-for-feature-selector.ts no
code defects, namespace import;
prefer-selector-in-select.ts 1 bug fixed;
prefix-selectors-with-select.ts 2 bugs fixed (suggestion);
select-style.ts 6 defects fixed (fixes, stores in
variables); use-consistent-global-store-name.ts 4 defects
fixed (rename, stores missed); folder.ts no defects (spec
added); guards.ts 1 latent bug fixed, dead code removed;
helper-functions/index.ts no defects;
ngrx-modules.ts no defects (module test added);
rules.ts no defects, dead code removed;
utils.ts 5 defects fixed (aliased imports), helper
consolidated; utils/index.ts no defects;
selectors/index.ts no defects, dead code removed
The same pipeline, run again on the Helpdesk app (#1001): 123 files across its five projects, bottom-up through the dependency chain, each file with its own sub-issue and PR, merged by hand. A bug fix came with a test that failed without it; where a unit test could not show it, the fix was shown on the real Docker stack or in the browser first.
11/1123/2324/2463/632/2