Disable trash for post type

If I understand your question correctly I just came across a similiar situation in a test project I’m working on.

I just added a custom meta field active and none active as a checkbox.
When I get my posts on the pages I filter on this meta field aswell.

So on the live website I only show published posts who also have the custom checkbox active.
If not I don’t show them.
But in the backoffice all those posts are threated as live posts.

Would this approuch be what you are looking for?
If wanted I can provide some code examples, although this should be quite clear.

— for trash you can do this.
There is a constant named EMPTY_TRASH_DAYS
you could Set EMPTY_TRASH_DAYS to a very high number.

 define( 'EMPTY_TRASH_DAYS', 1000000 );

btw this goes in your wp-config.php

I found this also here
https://wordpress.stackexchange.com/a/7761/17541
seems like you can remove the shedule action.

function my_remove_schedule_delete() {
    remove_action( 'wp_scheduled_delete', 'wp_scheduled_delete' );
}
add_action( 'init', 'my_remove_schedule_delete' );