The specification in .specify/spec.md has diverged completely from the current implementation. This documentation gap makes it difficult for new contributors to understand the actual behavior and makes the spec unreliable as a reference.
What needs to happen: Review the current codebase and update spec.md to accurately reflect how HALEngine actually works today.
Check: Verify that all major components, API signatures, and behavior are documented correctly.
Missing symbols (heuristic)
- type:
IncomingMessage — Type for incoming messages from client, includes UserMessage and Ping variants
- type:
UserMessage — User-provided text input with optional metadata
- type:
Ping — WebSocket heartbeat message
- type:
OutgoingMessage — Type for outgoing messages to client, includes multiple message variants
- type:
ConnectedMessage — Initial handshake message after WebSocket connection
- type:
EntryUpsertMessage — Message for new or updated conversation entry
- type:
EntryDeltaMessage — Message for streaming content delta
- type:
EntryCommitMessage — Message marking entry finalization
- type:
EntrySkipMessage — Message to skip tool or response generation
- type:
ErrorMessage — Message for error with code and details
- type:
PongMessage — Heartbeat acknowledgment message
- type:
StreamEndMessage — Message marking end of streaming sequence
- type:
ChatSession — Session model with id, userId, entries, createdAt, updatedAt properties
- type:
UserEntry — Entry type for text message from user
- type:
AssistantEntry — Entry type for AI-generated response with tool calls
- type:
ThinkingEntry — Entry type for internal reasoning parsed from models that support thinking
- type:
ToolEntry — Entry type for tool execution metadata and results
- type:
SessionEntry — Entry type marking session lifecycle events
- type:
Message — AI communication message type with TextMessage, ToolUseMessage, ToolResultMessage variants
- type:
TextMessage — Simple text content message
What you should actually do
- Decide the direction first: is the spec stale, or is the code wrong? For a
reconstruction-grade spec the answer is almost always "update the spec".
- If you update the spec, fix the diverged items above and re-verify every
([validated by …](…)) link and #Lnn anchor on the statements you touch.
- If this is a false positive — the named items are endpoints, fields, or methods
rather than top-level symbols, and the behaviour still matches — close this as
stale rather than editing the spec.
Managed by Lore · created by spec-drift · Lore-Task: f49756df-156b-4079-afea-b48ff62cb720
The specification in
.specify/spec.mdhas diverged completely from the current implementation. This documentation gap makes it difficult for new contributors to understand the actual behavior and makes the spec unreliable as a reference.What needs to happen: Review the current codebase and update spec.md to accurately reflect how HALEngine actually works today.
Check: Verify that all major components, API signatures, and behavior are documented correctly.
Missing symbols (heuristic)
IncomingMessage— Type for incoming messages from client, includes UserMessage and Ping variantsUserMessage— User-provided text input with optional metadataPing— WebSocket heartbeat messageOutgoingMessage— Type for outgoing messages to client, includes multiple message variantsConnectedMessage— Initial handshake message after WebSocket connectionEntryUpsertMessage— Message for new or updated conversation entryEntryDeltaMessage— Message for streaming content deltaEntryCommitMessage— Message marking entry finalizationEntrySkipMessage— Message to skip tool or response generationErrorMessage— Message for error with code and detailsPongMessage— Heartbeat acknowledgment messageStreamEndMessage— Message marking end of streaming sequenceChatSession— Session model with id, userId, entries, createdAt, updatedAt propertiesUserEntry— Entry type for text message from userAssistantEntry— Entry type for AI-generated response with tool callsThinkingEntry— Entry type for internal reasoning parsed from models that support thinkingToolEntry— Entry type for tool execution metadata and resultsSessionEntry— Entry type marking session lifecycle eventsMessage— AI communication message type with TextMessage, ToolUseMessage, ToolResultMessage variantsTextMessage— Simple text content messageWhat you should actually do
reconstruction-grade spec the answer is almost always "update the spec".
([validated by …](…))link and#Lnnanchor on the statements you touch.rather than top-level symbols, and the behaviour still matches — close this as
stale rather than editing the spec.
Managed by Lore · created by
spec-drift· Lore-Task: f49756df-156b-4079-afea-b48ff62cb720