I have things working now, but the issue that led to this behaviour implies a possible bug in the logistics of building schema descriptors and running local deployments.
When running a local deployment, the descriptor in build/descriptor/output seems to be copied to build/assembly/schema. When running “Generate Code” a new valid descriptor is written to build/assembly/schema, but not build/descriptor/output. This means that when running a local deployment, the valid build/assembly/schema descriptor is overwritten with the outdated and possibly invalid descriptor from build/descriptor/output. If the build/descriptor directory is removed, sometimes the copying does not take place and the local deployment runs fine; but sometimes running a local deployment causes the build/descriptor directory to be recreated with a descriptor that is not up to date, leading the valid descriptor in build/assembly/schema to be overwritten. (I’m not clear why sometimes that directory is rebuilt and sometimes it is not)
Considering all this, the stable configuration is building a descriptor, then manually copying it from build/assembly/schema into build/descriptor/output so that the build/assembly/schema descriptor won’t be overwritten. This causes both our local and cloud deployments to work; however, this is an easy step to forget.
Does any of this make sense? Any idea if this implies a problem on my end or on yours?