2f3ccfa3bd
`platforms.webhook.port: 9100` (and `routes`, `secret`, api_server `key`/ `cors_origins`, any adapter setting) was silently dropped unless nested under `extra:` — PlatformConfig.from_dict only read a fixed set of typed fields. Two partial bridges (a per-platform port/host/secret table in the loader and an api_server-only block) covered a few keys and had to be extended for every new one. from_dict now promotes every non-typed top-level key into `extra`, with an explicit `extra:` value winning on a clash and typed fields never leaking into `extra` on a to_dict/from_dict roundtrip. Both hand-written bridges are removed. Same direction as PRs #10208/#10211/#10453 (rainow's #10206 diagnosis) and #20506; those targeted the pre-loader layout. Fixes #10206