Packages
Secure BEAM sandbox runtime for LLM code mode and MCP aggregation. Run concurrent LLM/tool clients safely while agents orchestrate approved tools, call upstream MCP/OpenAPI servers, and transform data.
Current section
Files
Jump to
Current section
Files
priv/prompts/behavior-return-explicit.md
# PTC-Lisp Explicit Return Mode
Return convention for multi-turn: use (return ...) / (fail ...) explicitly.
<!-- version: 1 -->
<!-- date: 2026-05-18 -->
<!-- prompt-guidelines: priv/prompts/README.md -->
<!-- audience: ptc-lisp-system-prompt -->
<!-- budget: target<=900 bytes, hard<=1300 bytes -->
<!-- changes: Extracted from lisp-addon-multi_turn.md as part of 2-axis prompt refactor -->
<!-- priority: inspect before return; do not combine println/tool calls with return -->
<!-- used-by: PtcRunner.Lisp.LanguageSpec via PtcRunner.Lisp.PromptRegistry -->
<!-- profiles: explicit_return, explicit_journal -->
<!-- shown-in: SubAgent PTC-Lisp system prompt for explicit return profiles -->
<!-- composed-with: reference.md and behavior-multi-turn.md before this card; capability-journal.md optionally after -->
<!-- PTC_PROMPT_START -->
<return_rules>
Use `(println ...)` to inspect, `(return answer)` when done.
Explore first, return last. If no tools are needed, `return` immediately. Otherwise, never `return` in the same turn as `println` or tool calls; you must see their next-turn output first.
Return only after concrete evidence: tool output, printed values, or computed values already visible to you. A guess is worse than another exploration turn.
```clojure
;; BAD: tool result unseen
(def data (tool/search {:query "revenue"}))
(return {:revenue 42000})
;; GOOD: inspect, then return next turn
(def data (tool/search {:query "revenue"}))
(println "data:" data)
```
```clojure
(return {:result data})
(fail {:reason :not_found :message "User not found"})
```
`return`/`fail` exit immediately. Do not combine them with tool calls or `println`.
</return_rules>
<!-- PTC_PROMPT_END -->