The problem with all the usual debugging steps is they do not affect the DB content where capabilities are stored. If your user lost the capability to edit posts according to the DB, it will remain lost through all the usual debug steps, IF this is a DB capability issue.
If your site had no capability adjustments beyond the default, and you can access another functioning site’s DB, also with only default capabilities in place, there is something else you can try. Access phpMyAdmin for your site’s DB. This can usually be done through cPanel, Plesk, etc. of your hosting plan. Look at the user table to determine your user ID. The first admin user created at installation should be ID #1. If this is not your user, search the table for your login to determine the ID.
With your user ID, find the “wp_capabilities” entry for your user in the usermeta table. The meta value here is a serialized array, which looks rather convoluted, but the assigned user role should be clear. Be sure it is what it’s supposed to be. Confirm that these capabilities are NOT listed here: “edit_posts”, “edit_others_posts”, “edit_published_posts”. Normally they would not be listed. If they ARE listed, stop here, the problem lies elsewhere.
Now go to the options table and search for the option name “wp_user_roles” and chose to edit this record. You’re just going to look right now, never try to edit components of a serialized array. Look at the option value field. It’s a complete mess of data, but you should be able to pick out your role. Scan all the capabilities that occur after your role and before the next role.
If your role is administrator, read capabilities until you reach the editor role. You should find the following capabilities amongst many others: “edit_posts”, “edit_others_posts”, “edit_published_posts”. If these are in place, the problem lies elsewhere. Back out of the edit mode and log out of phpMyAdmin.
If any of those capabilities are missing from your role, make a backup copy (Export) of the Options table. Locate the same record on a functioning site and wholesale copy the entire option_value field to your computer’s clipboard. Go to the problem record and completely replace ALL of the current field’s content with the content of your clipboard. Click “Go”.
If you have any caching in place, flush, clear, or disable it. You should now be able to edit posts. Good luck!