# Web CommandFeat remaining implementation boundaries Batch: `d937ec7eef2892d2286973f5` Implementation remains incomplete for all three selected records. No executable registration was added. No builds, tests, browser validation, acceptance runs, benchmarks, or historical reconciliation were performed. ## Retained desktop source decisions - `Web:desktop:Std_Recompute`: the complete activation body at `freecad-source/src/Gui/CommandFeat.cpp:62` only calls `Q_UNUSED(iMsg)`. Preserve that exact desktop behavior; do not substitute document recomputation. Its constructor and activation prerequisites still need a bounded source anchor. - `Web:desktop:Std_RandomColor`: at `CommandFeat.cpp:84`, each selected object's view provider receives an independently sampled color from `CET::R1`. Links enable `OverrideMaterial` and update `ShapeMaterial` diffuse color. Other providers update a material or material-list `ShapeAppearance` property when present. Selected parts and document object groups also color their immediate group children. The operation opens and commits a command transaction. Activation requires a nonempty selection. Preserve these material, group, palette, and transaction semantics in the document/view owner. - `Web:desktop:Std_SendToPythonConsole`: at `CommandFeat.cpp:224`, selection uses all documents and old-style element resolution. Empty selection or a missing first object returns without action. The command executes the desktop cleanup statement for `doc,lnk,obj,shp,sub,subs`, binds the first object's document, resolves links through `lnk.getLinkedObject()`, and binds `obj`. For a geometric object with a geometry property, it binds that actual property as `shp`, the first selected subobject as `sub`, and multiple subobjects as `subs`. It then activates and focuses the Python console. These must be live native bindings in the console interpreter, not serialized object names or markers. ## Remaining patch anchors The four permitted supplemental windows were consumed by the bounded packet summary, `CommandFeat.cpp:62` (100 lines), `CommandFeat.cpp:224` (100 lines), and `WebRuntimeProbe.cpp:45` (100 lines). This is a source-window limit, not evidence that the business implementation is absent. The inspected Web dispatcher parses record names, delegates document commands to `executeDocumentCommand`, and ends with that same delegation. Adding names to its desktop list alone would instead direct them to `executeWebMacroCommand` and does not establish the required selected-command behavior. Next packet should supply exact anchors for the existing document command owner, native view-material storage and display propagation, console interpreter and mounted focus handling, and selected-command entries in the actual JSON catalogs used by `tools/generate_feature_capability_registry.py`. Include the generator's invocation contract. Reuse the desktop decisions above without rereading their unchanged windows. Implement in those owners, connect the Web adapter and mounted console where needed, and register only the resulting executable behavior. The outer pipeline retains ownership of incremental build, sync, and route receipts; those receipts do not constitute business acceptance.