65b38997f7
One file, member-charter.md, not two. Two files would have made the U5 digest non-comparable between the Claude adapter and this one, which is the whole point of the receipt; and nobody verified how OpenCode merges multiple instruction files, so array order was an unverified dependency. The OPENCODE_CONFIG condition widens to include a charter. It used to be hasMcp() || hasCustomProvider(cfg), so a profile with a role charter but no MCP and no custom provider would have got no config file and therefore no charter — the feature silently doing nothing for that profile. The file stays in the per-spawn temp dir, never the worktree: the worktree is removed on release, the parity overlay already writes into it, and CB-525's lesson was that config the bridge copied into a worktree made a worker operate on the wrong tree. Being outside the repo is also what stops it being committed, which a .gitignore line does not.