I'm trying to determine if it's possible to define custom attributes associated with vertices or edges of a mesh and then assign values to them manually as part of the mesh creation process, much like how edges can be (un)marked as sharp in edit mode, or vertices in groups can be assigned weights.
When initially skimming the user guide for 3.2 as a new user, it sounded like custom attributes provided exactly the ability I was looking for. But as best as I can tell, these named custom attributes exist only as locations to which geometry nodes can write procedurally calculated intermediate values. E.g., the Spreadsheet editor type displays any added custom attributes for a mesh and their values, and has separate views for "evaluated" and "original," but there seems to be no way in this or any other interface to assign values to the starting mesh.
Are custom attributes exclusively derived / procedural state, or is there a way (including through the Python API) to assign custom attribute values to mesh elements as part of the authoring process, similar to built-in properties like edge sharp/smooth? Are there any other Blender features suitable for assigning custom data manually to vertices / edges / etc. of a mesh?