Finding
src/cli/commands/tracker.ts:206 reads the manifest to obtain current.provider, then calls syncManifestFeature (src/core/manifest.ts:294), whose first act is a second readManifest + JSON.parse of the same file.
Why deferred
Negligible in absolute terms (small JSON, one-shot CLI command) — reported because init.ts deliberately avoids the same pattern by reusing existingManifest throughout. The only fix is a signature change to syncManifestFeature, which every feature toggle in the CLI calls, for a negligible one-shot gain. Reviewer's own recommendation: "Do not restructure shared plumbing for this alone."
Suggested fix
If touched, syncManifestFeature could take an optional already-read manifest parameter. Not warranted at this severity alone.
References
Finding
src/cli/commands/tracker.ts:206reads the manifest to obtaincurrent.provider, then callssyncManifestFeature(src/core/manifest.ts:294), whose first act is a secondreadManifest+JSON.parseof the same file.Why deferred
Negligible in absolute terms (small JSON, one-shot CLI command) — reported because
init.tsdeliberately avoids the same pattern by reusingexistingManifestthroughout. The only fix is a signature change tosyncManifestFeature, which every feature toggle in the CLI calls, for a negligible one-shot gain. Reviewer's own recommendation: "Do not restructure shared plumbing for this alone."Suggested fix
If touched,
syncManifestFeaturecould take an optional already-read manifest parameter. Not warranted at this severity alone.References
.devflow/docs/reviews/feat-325-tracker-phase-3-init-selected-provider/2026-09-17_1253src/cli/commands/tracker.ts:206,src/core/manifest.ts:294