Genuine curiosity here, just to ruminate a bit: is there a reason you disallow the model from seeing it at all? I can totally accept not wanting any edits, and that's more than reasonable. But even close source binaries end up with useful patches once someone knows that a particular loop does something weird or a process implementation behind a protocol is actually a different interpretation than the protocol definition itself belies. Seems like being aware of it is at least helpful, but again, curious!
Yes, because I've noticed that anything at all that is in the input stream gets used to waste tokens on various rabbit holes. Less information -> more efficiency and better output as long as it is sufficient to get the job done. For a human distinguishing important stuff from unimportant stuff is hard for an LLM it is next to impossible (at least, from what I've seen so far). There is no distinction between 'obscure thing that I once saw in passing 30 turns ago versus 'the thing right in front of my nose'. So you get all of these wild goose chases that lead nowhere and that will easily burn 50 to 100K tokens before finally being abandoned, more often than not after doing considerable littering and/or actual damage. So I am purposefully limiting what goes into the LLM and I find that by doing this it gets to the point much faster and produces better output. 'Lead it not into temptation' or something to that effect ;)