An assistant that produces a large patch for a problem that needed a small configuration change is very different from one that saves you twenty minutes of mechanical editing after you already chose the design. Both can appear equally productive if you measure lines written. Only the second case clearly reduced work.
That is the trap I would watch for. Code generation makes implementation cheap, and cheap implementation can quietly lead to more implementation. You may stop asking whether a feature needs another abstraction, dependency, table, or background job because the assistant can create one almost instantly. The review can confirm that the patch works while missing the larger question of whether the patch should exist.
This is especially relevant to migrations. A generated migration may be correct, tested, and fully understood, yet still be a worse choice than changing the rollout order, doing a temporary compatibility read, or running a smaller backfill through an existing job system. AI tends to answer the task as phrased. It rarely pushes back hard enough on the premise.
So I would not judge your situation by authorship percentage. Track what happened to review time, codebase size, reverted changes, follow-up fixes, and the amount of generated code you delete before merging. If typing time fell but the repository is accumulating extra machinery, the tool has moved effort rather than removed it.
I disagree slightly with making “could I recreate this without AI?” the main test. Plenty of competent developers could not reproduce every useful compiler transformation, framework component, or complex query from memory. The stronger test is whether you can change the code safely when the assumptions change. Can you locate the relevant decisions, predict the effects of modifying them, and tell when deleting the whole approach is better than repairing it?
Feeling weird is probably appropriate because your visible output no longer maps neatly to effort. That does not make the work less yours. It does mean you need a different scoreboard. The valuable contribution may now be rejecting three generated approaches, narrowing the fourth, and merging a much smaller fifth. If AI wrote the final text but your judgment kept unnecessary code out of the system, that is still engineering.