Seeking guidance for high level requirements in order to have files/links work as content addressable resources

The overall impetus is that I want to experiment with notes existing as its own ‘note literal.’ So given any particular composition of a note, it would always have the same location on any computer.

The overall structure I see is that notes link to other notes via a structure like this ‘sha256/hash.’ This can be fudged to work with whatever is more idiomatic within obsidian if this is even possible to begin with, but the overall requirement of specifying the hash is just the whole future proofing concern on any collisions, so technically it can link to any hashing system and even ‘default’ to one.

Then secondly I understand there is a bit of a ‘mismatch’ in the sense that there is never a moment a note is particularly ‘saved’ and we wouldn’t necessarily want to create an immutable note for every update. That would be much too lengthy. But thinking on this more it seems quite natural that you’d “print/release” a version of a note that feels like it is able to exist in a state forever at that version compared to a “slippery new note that is definitely too early to ship.”

So you’d have ‘fuzzy notes that don’t have enough mass yet’ that don’t need to be addressed by their hash yet, and then you have a mature section of your notes that link to immutable versions of each other. Given a note links to an “older” version it would probably be quite easy to display some type of UI/UX affordance that allows the user to continue to the latest evolution of that hashed resource without much concern of having to maintain the update.

Given these overall requirements I was thinking it would happen more “manually” over a command palette when ‘printing to a hash.’ But there were some ideas that it could be done automatically at the block level. Every block within a note could be its own hash and that would generate quite a bit of interesting features on its own but maybe that’s getting too ahead of ourselves.

Oh third, given we are viewing an ‘immutable note’ then there should probably be some indicator suggesting that for further edits to be made a new note should be created (which then creates a new note and should probably contain metadata linking the ancestry association which can be used for features in the future that would help with UX/navigation.)

I haven’t built a plugin on Obsidian yet but I am familiar with writing software and have taken a general overview of the API. I decided to post both to help myself think it out by writing it, and to see if anyone has any ideas or guidance to point me in the right direction; even if that direction is away from even trying this!

Thanks!