docs: 8 spec improvements from building a PHP/Laravel implementation#10
Open
datashaman wants to merge 1 commit intostrongdm:mainfrom
Open
docs: 8 spec improvements from building a PHP/Laravel implementation#10datashaman wants to merge 1 commit intostrongdm:mainfrom
datashaman wants to merge 1 commit intostrongdm:mainfrom
Conversation
Eight spec improvements discovered while building datashaman/attractor: 1. Complete Gemini finish reason mapping (20+ values, only 5 were listed) 2. ContentFilterError clarification — it's a 200 response, not an HTTP error 3. Shell command escaping warning — do not escape metacharacters 4. Async pipeline execution guidance (job queues, timeouts, progress) 5. DOT shape rendering note for Mdiamond/Msquare browser artifacts 6. working_directory as a graph-level attribute 7. Observability decoupling from handler logic (testability) 8. Token aggregation across providers in multi-provider pipelines Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
|
RE: 5. I see the geometric shapes play a part in the protocol. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Spec improvements discovered while building datashaman/attractor-app, a PHP/Laravel implementation of the Attractor spec. All changes are additive — implementation notes, missing mappings, and guidance for edge cases encountered in practice.
Changes across all three spec files:
unified-llm-spec.md:
BLOCKLIST,PROHIBITED_CONTENT,SPII,MALFORMED_FUNCTION_CALL,LANGUAGE,OTHER,FINISH_REASON_UNSPECIFIED) plus a note about 10+ newer image/advanced values. The existing table only listed 5 of 20+ possible Gemini values.SAFETYvsSPIIvsBLOCKLIST) matters for deciding whether to retry with a modified prompt or abort.coding-agent-loop-spec.md:
3. Shell command escaping warning — Added explicit guidance that implementations must not escape shell metacharacters in the command string. In practice,
escapeshellcmd()(PHP) and similar functions break pipes, redirects, subshells, and stderr redirection that LLMs routinely generate.attractor-spec.md:
4. Async pipeline execution (new Section 3.9) — Guidance on job queue dispatch, progress reporting, timeouts, and failure recording. In practice, pipeline runs exceed HTTP timeouts within seconds.
5. DOT shape rendering note —
Mdiamond/Msquareproduce visual artifacts in browser-based Graphviz WASM. Noted that rendering layers may substitute shapes while preserving originals for handler resolution.6.
working_directorygraph-level attribute — Every pipeline run needs a target working directory that flows to all node handlers. Added to the graph attributes table.7. Observability decoupling — Implementation note that event emission should live in the orchestrator, not handlers. Handlers that call logging directly break in unit tests without a framework container.
8. Token aggregation across providers — When pipelines use different providers per node, token counts need per-provider subtotals since tokenizers differ and cost estimation requires provider-specific rates.
Breaking Changes
None — all changes are additive notes, table entries, and a new subsection.