Runtime 9: add read-only heartbeat memory contract - #397
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6aa093d14e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| export const AgentHeartbeatResultSchema = z.object({ | ||
| decision: HeartbeatDecisionSchema, | ||
| summary: z.string(), | ||
| memory: MemoryRunResultSchema.default({ changed: false }), |
There was a problem hiding this comment.
Reject missing receipts from live heartbeat transports
When HeartbeatAgentExecutionTransport returns a legacy or malformed current result without memory, executeThroughTransport() validates it with this schema, so the default silently converts it to { changed: false }. If that remote run mutated Heddle memory, the caller can then skip the required durable checkpoint and lose the update; reserve this compatibility default for persisted historical-record decoding and require memory when validating live transport results.
Useful? React with 👍 / 👎.
Summary
MemoryToolModewith an exactread-onlycapability and exportmemoryToolkitfor explicit host compositionmemoryModeand toolkits through direct agent-loop and heartbeat execution-context pathsAgentHeartbeatResult.memory.changed, shared with conversation results through one trace projector{ changed: false }@heddleagent/runtime9.0.0 release candidate and document host lifecycle boundariesContract boundary
Heddle reports settled mutations made by Heddle memory tools. A hosted adapter still owns authenticated scope selection, restore-before-run ordering, signed capability allowlisting, checkpoint persistence/retry, and retention. Tool functions and filesystem paths remain outside the serialized heartbeat transport.
read-onlyexposes exactly:list_memory_notesread_memory_notesearch_memory_notesIt excludes
record_knowledge,memory_checkpoint, andedit_memory_note.Verification
/Users/roackb2/.agents/skills/orchestration/SKILL.md, whose description exceeds the catalog limityarn typecheckyarn lintyarn runtime:build@heddleagent/runtime@9.0.0and installed it in a fresh consumermemoryToolkit,MemoryToolMode,RunAgentHeartbeatOptions.memoryMode, andAgentHeartbeatResult.memoryRelease state
This PR is a reviewable Runtime 9 candidate only. It does not merge, tag, create a GitHub release, publish npm, deploy, or prove adopter behavior.
Closes #396