This is not possible using the capabilities system, the granularity you want does not exist in WP core:
edit_posts
- Since 2.0
- Allows access to Administration Screens options:
- Posts
- Posts > Add New
- Comments
- Comments > Awaiting Moderation
https://wordpress.org/support/article/roles-and-capabilities/#edit_posts
edit_posts
covers both viewing, adding, and editing posts, as well as commenting. There is a capability that controls wether you can edit other peoples posts however, but that isn't what you asked for.
Internally, the lowest abstraction before we get to raw SQL is wp_insert_post
, which handles both post creation, and post updating. The only difference between creating a post and editing a post is wether a post ID is in the array passed to wp_insert_post
( wp_update_post
is just a wrapper around wp_insert_post
)