Align cleveractors-core to The Actor Configuration Standard v1.0.0 #9
Open
opened 2026-05-27 07:44:46 +00:00 by hurui200320
·
2 comments
No Branch/Tag Specified
Labels
Clear labels
auto/blocked-by-deps
auto/ci-timeout
auto/claimed-implementer
auto/claimed-merge
auto/claimed-reviewer
auto/driver-down
auto/invariant-violation
auto/last-attempt-tier-0
auto/last-attempt-tier-1
auto/last-attempt-tier-2
auto/last-attempt-tier-min
Automation Tracking
auto/needs-conflict-resolution
auto/needs-implementer
auto/postmortem
auto/ready-to-merge
auto/restart-throttled
auto/revert
auto/sentinel
auto/stale-inactivity
auto/unstable
Blocked
Needs Feedback
Signed-off: Owner
Signed-off: Scrum Master
Signed-off: Tech Lead
Spike
PR blocked by an open issue dependency. Operator must close the dep (or remove the dependency link) before the merge driver can act. Auto-cleared by merge_drive when no open deps remain.
Most recent merge cycle hit CI timeout. Driver excludes this PR while last merge_cycle row is < 30 min old; label persists thereafter as visible history.
Currently being processed by an implementer worker.
Currently being processed by the merge driver.
Currently being processed by a reviewer worker.
Merge driver heartbeat stale; pipeline halted. Closed automatically on next clean tick.
Detected master commit violating the strict merge invariant. Tracked as an issue (not a PR label); kept here for label completeness.
In-cycle escalation: most recent attempt ran at the Tier 0 slot (`tier-0`). Slot's model defined in .opencode/models/tiers.yaml.
In-cycle escalation: most recent attempt ran at the Tier 1 slot (`tier-1`). Slot's model defined in .opencode/models/tiers.yaml.
In-cycle escalation: most recent attempt ran at the Tier 2 slot (`tier-2`). Slot's model defined in .opencode/models/tiers.yaml. Gated behind IMPLEMENTER_ESCALATION_TIER2_ENABLED.
In-cycle escalation: most recent attempt ran at the Tier -1 slot (`tier-min`). Slot's model defined in .opencode/models/tiers.yaml. Suffix is ``-min`` (not ``--1``) so the Forgejo UI reads naturally.
Tracking issues used by the AI Automation system for agents to communicate and report.
Rebase conflict needs LLM conflict-resolver.
Failing CI needs implementer attention.
Documenting a driver incident or rollback.
Reviewer has APPROVED this PR and no later REQUEST_CHANGES is outstanding. The merge driver requires this label to even consider a PR for merging. Set by the reviewer worker on APPROVE; cleared on REQUEST_CHANGES.
Train repeatedly lost master-tempo races. Driver excludes via merge_cycle until cooldown elapses; label persists as visible history.
Revert PR backing out an invariant violation. Fast-tracked through the merge driver.
Sentinel PR duplicated from upstream into a personal fork by tools/duplicate_prs_to_fork.py for pipeline testing. Lives only in the fork; the canonical pipeline never sees it.
No implementer activity for N days. Flagged for human review. Auto-cleared on next push to head branch.
Repeatedly fails on current master (>= 3 ci-fail-on-rebased-sha releases in 12 h). Excluded from driver until human triage.
A ticket in a blocked state and unable to complete until some other task is completed first.
Bounty
$100
A bounty of $100 for any open-source contributor who provides a MR that solves this issue
Bounty
$1000
A bounty of $1000 for any open-source contributor who provides a MR that solves this issue
Bounty
$10000
A bounty of $10000 for any open-source contributor who provides a MR that solves this issue
Bounty
$20
A bounty of $20 for any open-source contributor who provides a MR that solves this issue
Bounty
$2000
A bounty of $2000 for any open-source contributor who provides a MR that solves this issue
Bounty
$250
A bounty of $250 for any open-source contributor who provides a MR that solves this issue
Bounty
$50
A bounty of $50 for any open-source contributor who provides a MR that solves this issue
Bounty
$500
A bounty of $500 for any open-source contributor who provides a MR that solves this issue
Bounty
$5000
A bounty of $5000 for any open-source contributor who provides a MR that solves this issue
Bounty
$750
A bounty of $750 for any open-source contributor who provides a MR that solves this issue
MoSCoW
Could have
Could have feature in order to satisfy the epic/legendary.
MoSCoW
Must have
Must have feature in order to satisfy the epic/legendary.
MoSCoW
Should have
Should have feature in order to satisfy the epic/legendary.
There are questions in the ticket that can not be completed until the project owner provides clarity.
Points
1
1 man-hours worth of work for an expert with no learning curve.
Points
13
13 man-hours worth of work for an expert with no learning curve.
Points
2
2 man-hours worth of work for an expert with no learning curve.
Points
21
21 man-hours worth of work for an expert with no learning curve.
Points
3
3 man-hours worth of work for an expert with no learning curve.
Points
34
34 man-hours worth of work for an expert with no learning curve.
Points
5
5 man-hours worth of work for an expert with no learning curve.
Points
55
55 man-hours worth of work for an expert with no learning curve.
Points
8
8 man-hours worth of work for an expert with no learning curve.
Points
88
88 man-hours worth of work for an expert with no learning curve.
Priority
Backlog
This ticket has backlogged priority and is not to be worked on yet
Priority
CI Blocker
Critical priority issue that blocks CI/CD pipeline and prevents PR merges
Priority
Critical
The priority is critical
Priority
High
The priority is high
Priority
Low
The priority is low
Priority
Medium
The priority is medium
When an epic or legendary is in review it must be signed off by owner, tech lead, and scrum master before being marked as completed.
When an epic or legendary is in review it must be signed off by owner, tech lead, and scrum master before being marked as completed.
When an epic or legendary is in review it must be signed off by owner, tech lead, and scrum master before being marked as completed.
A ticket for learning a tool or technology that is needed to be able to do future planning and design.
State
Completed
The ticket has been fully implemented, completed, and merged with the source code. This label should only be applied once a ticket is closed.
State
Duplicate
A ticket that represents the same content as an existing ticket.
State
In Progress
A ticket that is actively being developed.
State
In Review
A ticket that has had some code completed to implement but is waiting to pass peer review and is not yet merged in.
State
Paused
This ticket's work started but wasn't finished. It's on hold (likely in a feature branch) and will be resumed later, either due to a blocker or a delay.
State
Unverified
All new tickets start in this state. A developer may set it to show the ticket is unverified. This means we haven't agreed to work on it. It will either move to a verified state or be closed as wontdo.
State
Verified
The issue has been verified by a developer as legitimate. It will be worked on and verified tickets are now considered part of the backlog.
State
Wont Do
This ticket has been decided it wont be done. This may mean the bug has been determined to not be real (cant verify) or the feature is one we have decided we dont want to adopt.
Type
Automation
Any edits or discussion about the AI automated coding system.
Type
Bug
Something that doesnt work as intended.
Type
Discussion
Anytime a ticket represents a discussion about a subject and doesnt fall into one of the other categories.
Type
Documentation
An error or improvement needed in the documentation.
Type
Epic
Any first tier epic. That is, an epic which contains only issues as children and will not have sub-epics.
Type
Feature
Some new functionality not present.
Type
Legendary
A type of Epic which will contain other Epics.
Type
Refactor
A code change that restructures existing code without changing its external behavior.
Type
Support
Someone needs help using the project.
Type
Task
A generic task that doesnt fit into the other type categories.
Type
Testing
Work exclusively focusing on fixing or expanding testing.
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
aditya (Aditya Chhabra)
aleenaumair (Aleena Umair)
brent.edwards (Brent Edwards)
CoreRasurae (Luis Mendes)
drew (Drew Morris)
eugen.thaci (Eugen Thaci)
freemo (Jeffrey Phillips Freeman)
HAL9000 (HAL 9000)
HAL9001 (HAL9001)
hamza.khyari (Hamza Khyari)
hurui200320 (Rui Hu)
justin.morris
khird (Kyle Hird)
org.cleveragents
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Depends on
Reference: cleveragents/cleveractors-core#9
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Overview
The Actor Configuration Standard (
actors-spec) v1.0.0 is the normative YAML schema, runtime semantics, and security model that all compliant implementations must satisfy.cleveractors-coreis the Python reference implementation, but a thorough audit reveals significant divergences:print(..., sys.stderr)signalling rather than spec-defined semanticssandbox.pydefinesSAFE_BUILTINSbutToolAgentbuilds its own parallel dict and never imports it[TOOL_EXECUTE:]block processing, routing prefix stripping, stream-route cycle detection) has no designated ownerminimal_contextpaper keys) are hardcoded in the framework coresession.pyis a one-line placeholder;network.pyraisesNotImplementedError; thelsp/module has no source filesactor-registry-standard.md) — a complete HTTP API for content-addressed package storage — is entirely unimplementedtypeCheckingModeis set to"off"inpyrightconfig.jsonThis Legendary tracks all work to bring
cleveractors-coreinto full conformance with both standards documents.Spec Documents
actors-spec/docs/index.md(v1.0.0)actors-spec/docs/actor-registry-standard.md(v1.0.0)Child Epics
Epic A1 — §3.1 + §11 + §16 + §20: Validation, Forbidden Patterns, File Merging, and Error Taxonomy
Enforce all §11 pre-instantiation validation rules and all §16 forbidden patterns as hard rejections. Currently accepted (and silently ignored) patterns that must produce
ConfigurationErrorinclude: top-levelstreams:/graphs:sections, list-formrouteswithfrom:/to:shorthand,agent_template:key,strategy:on composite agent,dynamic_routernode type, short-form bare-string prompts, sequence-form template parameters,template+typecoexisting on the same agent, andprompt+prompt_referenceon a chain agent.Additional scope beyond the original 9-epic draft:
metadata.error_typeis populated with the correct §20 category on every error emitted to__error__; ensureAgentCreationErroris raised for unavailable providers (notConfigurationError)verbose,logging.level,version) must be accepted without error even if they are not acted onEpic A2 — §4: Agent Type Completeness
Verify and complete all five agent types against the full §4 behavioral spec:
response_formatwith JSON schema forwarding), memory list capped atmax_history,conversation_historycontext pass-through whenmemory_enabled: false,_temperature_overridecontext key, system prompt rendered at invocation withcontext+message(warn and use literal on failure)_execute_python_codeto usesandbox.py'sSAFE_BUILTINS(currently a parallel dict); the 5-step tool invocation dispatch algorithm (single inline-code tool → full message; JSON withtoolkey; JSON parse failure error; space-separated command; unknown tool error); all seven built-in tools with their exact argument semantics;file_writemodes (w/a/insert,positionsemantics); progress bar facility (24-cell bar,█/░, percentage to 1 decimal, counter, optional label, trailing newline at 100%)strategy:key prohibition (already in §16; verify enforcement path)prompt/prompt_referencemutual exclusion; verify"ChainAgent processed: "prefix +" -> "separator semantics; no external callscontext.global) MUST be merged into each agent'sconfig.contextat creation time unless the agent declares its owncapabilitieslist andmetadatamapping; the 15 standard capability identifier strings ("text-generation","conversation","reasoning","analysis","creative-writing","structured-output","tool-execution","command-execution","http-requests","file-operations","math-evaluation","composite","stateful-workflow","reactive-processing","chain-processing") must all be supported; required per-agent metadata fields:name,type,capabilities,reactive: trueEpic A3 — §5 + §7.3: Stream Routes, Operators, Conditions, Bridge Routes, and Pipelines
Implement all 19 stream operators per §5.3 with exact semantics (including the 4 bridge operators:
graph_execute,state_update,state_checkpoint,graph_node). Enforcesubscriptionsas informational-only (canonical wiring is viamergesonly; no auto-subscription fromsubscriptionslist). Deprecate themerges: [{sources: [__input__], target: ...}]default-router approach in favour of thedefault_routerparameter.Additional scope:
"Error: <reason>",processed_bymetadata key,metadata.contextpropagation into outgoing messagessource_isonly in stream-router;context_value/output_pattern/message_patternonly in pure-graph edges;customonly in conditional graph nodes); §5.4.2 default-behavior table (stream-router → True on unknown type; bridgeconditional_route→ False; pure-graph edges → True with warning; conditional graph nodes → True)publicationstarget is also a merge/split source)upgrade_conditions,downgrade_conditions,state_extractor,state_flattener,preserve_subscriptions,preserve_checkpointing); all 7 bridge condition keys; advisory-only semantics (implementations MAY not act but MUST NOT reject valid bridge declarations)Epic A4 — §6: Graph Route Completeness
Complete all seven node types including
message_routerwith all five match modes (prefix/suffix/contains/regex/exact) and their extraction semantics. Implement the four §6.8 loop-detection guards with the preciseauto_finish_activebypass, 200-character fingerprint, and routing token list (GOTO_,ROUTE_,SET_,CMD_,DISCOVERY_RESPONSE,AUTO_SECTIONS_COMPLETE,COMMAND_OUTPUT). Replaceprint(..., file=sys.stderr)loop signals with proper exception/return-value semantics. Implement checkpointing + time travel (§6.6) and parallel node execution (§6.7). Implement pure-graph mode (§6.9) with post-execution context promotion.Additional scope:
replace,merge(default — deep for dicts, extend for lists),appendstate_classresolution; default fallback with warning on unknown class__<graph>_node_<node>__,__<graph>_control__,__<graph>_state__must be created with the correct reserved-name patternEpic A5 — §8: Three-Phase Template System
Implement the complete three-phase template lifecycle:
<<<TEMPLATE_START>>>/<<<TEMPLATE_END>>>/<<<BLOCK_START>>>/<<<BLOCK_END>>>) to protectsystem_promptexpressions during document parsingagent_ref/component_refresolution (local composite → outer actor scope)Add
template_strings:section support for templates whose{% for %}loops generate YAML keys. Verify all §8.3 built-in callables and filters for all three template engines (JINJA2, MUSTACHE, SIMPLE). Verify SIMPLE dialect's two-pass behavior (expression sandbox first, then format-string substitution).Additional scope:
"true"/"false"→bool, integer patterns →int, float patterns →float, valid JSON arrays/objects →list/dictConfigurationError(fatal); Phase B failure →ConfigurationError; Phase C failure → warn and use literal unrendered text (processing continues)Epic A6 — §13: Security Model
Align sandbox built-in allowlists to the two distinct §13 sets:
bool,dict,float,int,list,set,str,tuple,abs,all,any,enumerate,len,max,min,range,reversed,round,sorted,sum,zip,isinstance,type,locals,print,ValueError,IndexError,KeyError,TypeError,jsonmodule onlybool,dict,float,int,list,set,str,tuple,abs,all,any,len,max,min,round,sumonly (smaller set; nojson, no exception types, noisinstance)Consolidate all sandboxed execution to use a single source-of-truth dict (currently
sandbox.pydefinesSAFE_BUILTINSbutToolAgentbuilds its own parallel dict). Enforce two-factorfile_writerestriction (safe_mode: falsealone is insufficient — also requires_unsafe_mode: truein invocation context). Shell command blocklist (rm,del,format,shutdown,reboot,kill) applies in all modes regardless of safe/unsafe state.Epic A7 — §10 + §14: Context, Environment Variables, and Prompts
Complete global context inheritance per §4.9. Implement env var type coercion per §14 (when interpolation is the entire string value:
"true"/"false"→bool, integer patterns →int, float patterns →float; coercion applies recursively to all nested mappings and sequences). Enforce long-form prompts (reject bare-stringpromptsvalues; require{content: ...}mapping; silently skip non-conforming entries per §10.4).Verify §10.3 reserved context key enforcement: all 19 reserved keys documented in the spec; user keys MUST NOT begin with
__; keys beginning with_are strongly discouraged.Epic A8 — Actor Registry Standard: Package Registry HTTP API
Implement the HTTP API defined in
actor-registry-standard.md:GET /packages/{package_id},GET /{type}/{namespace}/{name}?version={v},POST /publish,GET /browse,GET /.well-known/cleverrouter-packagesvX.Y.Z(immutable),vX.Y.x/vX.x/latest(mutable aliases)actor,graph,stream,agent,template,skill,mcp,lspEpic A9 — Code Quality: Framework Depollution and Technical Debt
_strip_routing_prefixes's hardcoded paper-writer prefix list inapplication.py,minimal_context's paper-domain keys inconfig_parser.py, paper-stage list inrouting_adapter.pysession.py(1-line placeholder) andnetwork.py(NotImplementedError)lsp/module (only.pycfiles present; no source)typeCheckingMode: "standard"or"strict") and resolve all errorscomposite.pyparameter propagation stubEpic A10 — §12: Runtime Behavior
This section has no current owner and covers cross-cutting contracts that all other epics depend on for correctness.
content,metadata,source_stream,timestamp) must be present on all messages;metadata.contextMUST be preserved by reference on message copy; all other metadata MUST be shallow-copied (not deep-copied)context,_unsafe_mode,processed_by,error,error_type,timeout,state_updated,checkpointed,graph,node,execution_history,execution_count,final_state,source) and the rules for when each must be set__error__withcontent: <error string>,metadata.error: true,metadata.error_type: <§20 category>; downstream pipeline continues[TOOL_EXECUTE:]block processing: 5-rule algorithm — detect[TOOL_EXECUTE:<name>]...[/TOOL_EXECUTE]blocks across multiple lines in LLM output; sanitize JSON (escape unescaped backslashes, newlines, tabs, carriage returns); execute tool; substitute result in reverse-match orderGOTO_<TARGET>:,ROUTE_<TARGET>:,SET_<KEY>:,CMD_<KEY>:,COMMAND_OUTPUT:,DISCOVERY_RESPONSE:,AUTO_SECTIONS_COMPLETE:) must be stripped from__output__before exposing to the consumer; the current implementation has a hardcoded paper-writer-specific list (addressed in A9) and must be replaced with the spec-defined setEpic A11 — §17: Compliance Test Vectors
Build a structured compliance test suite covering all 12 §17 test vector categories. Without this epic, there is no systematic evidence that any other epic's work actually satisfies the spec. The 12 categories are:
llm,tool,composite,chain,template_instanceSuccess Criteria
ConfigurationErrortypeCheckingModeenabled with zero type errorsSAFE_BUILTINSis the single source of truth for all sandboxed execution, with the correct two-set split (§13.2.1 vs §13.2.2)This epic drafting should cover the full actors-spec as of commit
76e4299ae7, I haven't created those epics yet as the quick review shows that certain part of the spec may need to be updated. Once the spec is in good shape, I'll review the epic draft and create them.As of 2026 May 27, in the scrum meeting, Jeff advises Luis Mendes to prioritize integrating v2 as a stable working version, even if it disagrees with the spec. So for CleverRouter, I will start integrating the current version of CleverActors right away. This epic should be suspended for now.
hurui200320 referenced this issue2026-06-12 03:13:59 +00:00