José,
Just tried the new commit and was able to manually set the id of the embedded model (both in embeds_one and embeds_many fields).
But I did notice that it's not possible to append items to a list (of embeds_many field). It's not related to manually setting the id though. I was able to replicate the error in the mongdb adapter:
Steps to reproduce:
iex> weather = Repo.get Weather, "1d4197db0398eb193c5315cd"
iex> changeset = change(weather) |> put_change(:items, [%Item{name: "Item 1", order: 0}])
iex> Repo.update! changeset
iex> weather = Repo.get Weather, "1d4197db0398eb193c5315cd"
iex> changeset = change(weather) |> put_change(:items, weather.items ++ [%Item{name: "Item 2", order: 1}])
iex> Repo.update! changeset ** (ArgumentError) cannot dump embed `items`, invalid value: {:ok, %Ecto.Changeset{action: :update, changes: %{}, constraints: [], errors: [], filters: %{}, model: %Item{__meta__: #Ecto.Schema.Metadata<:loaded>, id: "1d7ed4200398eb4d6799edee", name: "Item 1", order: 0}, optional: [], params: nil, repo: nil, required: [], types: %{id: :binary_id, name: :string, order: :integer}, valid?: true, validations: []}}
(ecto) lib/ecto/type.ex:374: Ecto.Type.dump_embed/5
(ecto) lib/ecto/type.ex:344: anonymous fn/6 in Ecto.Type.dump_embed/3
(elixir) lib/enum.ex:1261: Enum."-reduce/3-lists^foldl/2-0-"/3
(ecto) lib/ecto/type.ex:343: Ecto.Type.dump_embed/3
(ecto) lib/ecto/query/planner.ex:29: anonymous fn/6 in Ecto.Query.Planner.fields/4
(stdlib) lists.erl:1261: :lists.foldl/3
(ecto) lib/ecto/query/planner.ex:21: Ecto.Query.Planner.fields/4
(ecto) lib/ecto/repo/model.ex:116: anonymous fn/10 in Ecto.Repo.Model.update/4