Athlete communications hard-gate proposal
Summary
This proposal outlines a true athlete-delivery hard gate in which all athlete message delivery must pass through a dedicated athlete-comms agent.
Under this model, Coach Luca and any specialist or workflow may still decide the coaching content, but they would no longer send directly to the athlete. Instead, they would hand off a final content payload to athlete-comms, which would act as the single language-review and delivery authority for athlete-facing messaging.
The purpose is to solve a recurring structural problem, not just a style problem:
- athlete-facing drafts, internal notes, and progress chatter must never be able to reach the athlete
- wording drift into vague, soft, or non-coaching language must be caught before send
- all athlete messaging should pass through one consistent review layer for tone, terminology, clarity, and delivery readiness
This proposal makes a sharp distinction between:
- a workflow gate, where teams, agents, and other processes agree to route messages through
athlete-comms - a true runtime hard gate, where every other athlete-facing path loses direct send authority and any bypass attempt fails closed
This proposal only succeeds if the second condition is met. If any other agent, cron job, workflow, or process can still send directly to the athlete, then athlete-comms is only an advisory or review layer, not a true hard gate.
This proposal recommends that athlete-comms be treated as an official OpenClaw agent in this workspace architecture, with a narrow and highly controlled role.
Reusability requirement
The athlete-comms role itself must remain athlete-agnostic.
That means the role definition, agent instructions, runtime wiring, and base review behavior must not be hard-coded to any one athlete's identity, tone, preferences, or vocabulary. The same role should be reusable across athletes by changing only the active athlete context and athlete-local preference documents, not by forking or rewriting the agent.
Athlete-specific communication preferences should live outside the role in a separate athlete-local document that can supplement or override generic language behavior.
That athlete-local override document should be used for things such as:
- words or phrases the athlete dislikes
- preferred tone or disliked tone
- preferred spelling, wording, or terminology variants
- preferred level of directness, warmth, or brevity
- any other athlete-specific communication constraints that should affect final wording
The role should apply those athlete-local preferences at runtime after loading the active athlete context.
No-code implementation requirement
This proposal should avoid introducing custom Python scripts, JavaScript scripts, or other executable validation layers just to review, score, verify, or approve athlete-facing messages.
The preferred design is a Markdown-and-policy system:
- role instructions live in Markdown
- athlete-local language preferences live in Markdown
- review standards live in Markdown
- delivery rules and block conditions live in Markdown
The goal is to keep the communication layer understandable, portable, and easy to audit without requiring a separate codebase or script runner.
That means this proposal should not depend on:
- Python review scripts
- JavaScript or Node validators
- external message-quality scoring programs
- custom executables whose only purpose is to inspect or grade athlete wording
If runtime hard-gating is eventually required, that should be treated as a separate delivery-authority problem, not as a reason to add custom language-review code. The language and policy layer should remain declarative and Markdown-based.
Problem statement
The current system allows Coach Luca workflows to both compose and send athlete-facing messages. Even with strong written rules, that leaves too little separation between:
- internal reasoning
- draft composition
- language review
- final delivery
That coupling creates two classes of risk:
-
Delivery-path risk
- a non-final message, draft fragment, internal note, or progress update can enter the athlete-facing send path
-
Language-quality risk
- the coaching content may be directionally correct, but the wording may still be vague, non-elite, imprecise, too soft, too process-heavy, or otherwise below the expected professional standard
A hard outbound gate solves both by separating message authorship from message delivery.
Workflow gate versus runtime hard gate
This distinction is critical.
Workflow gate
A workflow gate means:
- Coach Luca, other agents, and other workflows are instructed to route athlete messages through
athlete-comms athlete-commsreviews, rewrites, or approves final wording- the system treats
athlete-commsas the standard outbound path
This is useful, but it is still procedural. It does not fully solve the original problem if another path can still send directly.
Runtime hard gate
A runtime hard gate means:
- only
athlete-commshas athlete-send authority - every other agent, cron job, workflow, and skill loses direct athlete-send authority
- any attempt to bypass
athlete-commsfails closed at the runtime or delivery layer - non-final drafts, status updates, or internal notes cannot reach the athlete because the roles that generate them cannot send to athlete channels
This is the version required to neutralize the higher-level pressure to emit progress updates while working. The higher-level behavior may still exist upstream, but it becomes irrelevant if the agent experiencing that pressure has no power to send directly to the athlete.
Therefore, this proposal should be read as a runtime-authority proposal, not just a review-workflow proposal.
Proposed architecture
Core rule
Only athlete-comms may send messages to the athlete.
No other agent, cron job, workflow, process, or skill should be allowed to deliver athlete-facing text directly.
For clarity, this is not just a preferred routing convention. It is the central success condition of this proposal. If direct send rights remain available anywhere else in the system, then the proposal has not actually created a hard gate.
That includes:
- Coach Luca direct replies
- any other agent direct replies
- morning plan
- evening summary
- athlete check-in
- self-assessment prompts
- nutrition replies
- ad hoc athlete follow-ups
- future specialist-assisted athlete communications
- any other athlete-facing cron, automation, workflow, or process
Every outbound athlete message must follow this flow:
- content is decided by Coach Luca, with specialist input if needed
- a candidate message body is prepared for athlete delivery
- the candidate is handed to
athlete-comms athlete-commsreviews wording, tone, terminology, clarity, and policy fitathlete-commseither:- approves and sends
- rewrites and sends
- blocks and returns for revision
Role boundaries
Coach Luca
Coach Luca remains responsible for:
- coaching judgment
- training decisions
- nutrition decisions
- planning decisions
- deciding whether a message should be sent
- determining which specialists are materially involved
- ensuring the content itself is correct
Coach Luca should not remain the final delivery authority once the hard-gate model is implemented.
Specialists
Specialists remain responsible for:
- internal analysis
- technical input in their domain
- identifying risks, constraints, and recommendations
Specialists should not send directly to the athlete.
Athlete-comms
athlete-comms is responsible only for the athlete-facing communication layer.
Its job is to:
- review wording
- enforce professional coaching terminology
- preserve the intended meaning of the coaching content
- catch vague or non-standard language
- remove internal process language
- reject draft fragments or non-final bodies
- enforce the required attribution footer
- send the approved final message to the athlete
- apply athlete-local communication preferences from the active athlete context without making the role itself athlete-specific
athlete-comms should have no authority to invent new training decisions, override the actual coaching recommendation, or materially alter the technical content unless the original wording is ambiguous enough to create a meaning problem.
Should the agent run full-time?
Short answer: no, not as an always-active conversational agent.
The recommended model is:
athlete-commsexists as an official OpenClaw agent- it runs on demand as the final athlete-message gate
- it is invoked only when there is a candidate athlete-facing message to review and send
Why not full-time?
A full-time always-running language gate would add complexity without much benefit.
The gate does not need to maintain an independent ongoing conversation with the athlete. It needs to perform a narrow control function:
- receive candidate athlete message
- evaluate wording and delivery readiness
- send or block
That is better handled as a single outbound control point, not a permanently active conversational personality.
When it should run
athlete-comms should run whenever any workflow reaches a point where an athlete-facing message is ready to leave the system.
Examples:
- Coach Luca replies to a same-day athlete message
- morning plan is ready
- evening summary is ready
- nutrition reply is ready
- self-assessment prompt is ready
- a direct operational follow-up to the athlete is ready
So the agent should be persistent in architecture, but event-driven in execution.
Should this be an official OpenClaw agent?
Yes.
This proposal recommends that athlete-comms be created as an official OpenClaw agent in the workspace roster, rather than as a loose helper skill.
Why it should be an agent
An agent is more appropriate than a passive skill because this role needs to:
- receive structured handoff input
- apply a consistent review persona and review standard
- make a send or block decision
- own the final outbound delivery step
- maintain a stable, auditable responsibility boundary
A skill alone can define instructions, but it does not create a clear authority boundary.
Recommended roster role
Suggested roster addition:
athlete-comms— final athlete-facing language review and outbound delivery gate
This agent should be the only role with authority to execute athlete delivery once the system is migrated to the hard-gate model.
Message flow design
Draft handoff format
Coach Luca should hand off a structured package to athlete-comms, not just a raw paragraph.
Recommended handoff fields:
This structure keeps the review focused on wording and delivery, not on reconstructing the coaching logic from scratch.
The review process should rely on written policy and role instructions, not on custom scripts that attempt to validate wording mechanically.
Athlete-local language profile
To keep the role reusable, athlete-specific wording preferences should live in a separate athlete-local document rather than inside the athlete-comms role definition.
Recommended characteristics of that document:
- it is optional but supported for every athlete
- it belongs under the athlete's own workspace area, not under the generic
athlete-commsagent - it may supplement or override default wording behavior for that athlete only
- it should be loaded by reference from the active athlete context at runtime
Recommended scope for that document:
- preferred or prohibited words and phrases
- tone preferences
- terminology preferences
- spelling or style preferences
- domain-specific wording constraints for symptoms, effort, race language, or training terminology
This keeps the architecture portable. The athlete-comms role remains generic, while each athlete can still carry their own communication rules.
Both the generic role rules and the athlete-local override document should remain plain Markdown artifacts rather than executable review code.
Review outcomes
athlete-comms should produce one of three outcomes:
1. Approve and send
Use when the message is already acceptable.
2. Rewrite and send
Use when the content is correct but the wording needs improvement.
Examples:
- vague language made more precise
- wording shifted into stronger coaching terminology
- internal chatter removed
- structure tightened
- attribution footer corrected
3. Block and return
Use when the candidate is unsendable.
Examples:
- internal progress note
- partial draft
- unclear recommendation
- missing critical context
- wording that materially distorts the intended coaching meaning
- missing attribution when required
Hard gate behavior
The hard gate must be literal:
- if a message has not passed
athlete-comms, it cannot be sent to the athlete - if
athlete-commsblocks the message, the send must fail closed - if the candidate message is not final,
athlete-commsmust send nothing - if any other role attempts direct athlete delivery, the runtime should reject it
- if runtime rejection is not yet available, the system should still be treated as operating in an interim workflow-gate mode rather than claiming a true hard gate
This is the core of the proposal.
Language review standard
What athlete-comms should enforce globally
athlete-comms should evaluate every athlete-facing message for:
- professional coaching tone
- sport-specific terminology
- precision of instruction
- clarity of execution cues
- appropriateness for an elite cyclist
- absence of internal process language
- absence of vague metaphors or soft filler
- absence of operator-facing wording
- absence of therapy-style or corporate-style phrasing
- consistency with required attribution rules
Reject examples
The agent should reject or rewrite language such as:
- internal progress chatter
- "I'm logging this now"
- "I'll update this first"
- draft scratchpad fragments
- vague symptom metaphors like "gets louder"
- generalized phrases that are not standard high-performance coaching language
- non-committal filler that weakens a clear recommendation
Preferred language characteristics
The agent should prefer wording that is:
- direct
- concrete
- technically accurate
- concise
- coach-like
- athlete-centered
- natural for an experienced rider
Tuning model
A major benefit of the athlete-comms design is that language tuning can be separated cleanly into two layers:
- a global communication policy
- an athlete-specific override layer
This directly supports the requirement that the messaging style can be tuned both generally and per athlete.
Proposed file structure for tuning
Global policy
Create a canonical global file for the communication gate, for example:
shared/comms/athlete-comms-policy.md
This file would define the universal rules for all athlete-facing communication.
Suggested contents:
- role and authority of
athlete-comms - what the agent may and may not change
- universal delivery hard-gate rules
- wording standards
- banned message classes, for example internal notes and progress chatter
- attribution enforcement
- default review checklist
- fallback behavior when a message is not ready
Athlete-specific tuning file
Create an athlete-level override file, for example:
athlete/comms-profile.md
This file would define that athlete's preferred communication tuning.
Suggested contents:
- preferred directness level
- preferred warmth level
- preferred brevity level
- tolerance for explanation depth
- sport-specific phrasing preferences
- words or constructions to avoid
- how explicitly symptoms, recovery, body composition, or health issues should be discussed
- whether the athlete responds better to short commands, brief rationale, or slightly fuller framing
- any athlete-specific formatting preferences
This lets the system hold one universal communications standard while still adapting the final language to the athlete.
Tuning approach
The tuning model should not be an open-ended personality slider.
It should be a constrained set of communication dials within a professional range.
Recommended dials:
The global policy should define safe defaults and allowed bounds. The athlete file should only tune within those bounds.
Suggested default behavior
By default, the agent should favor:
- high directness
- medium warmth
- concise wording
- high terminology precision
- low tolerance for vague language
- no internal process narration
That matches the current Coach Luca performance standard.
Official authority model
Recommended send authority
Under the hard-gate model, the runtime should enforce this authority rule:
- only
athlete-commscan execute athlete delivery - all other agents and processes can draft or request delivery, but not send directly
- direct send rights must be removed from all other athlete-facing paths
This is stronger than a review convention. It becomes an actual delivery-control boundary.
Without this permission separation, the original failure mode remains possible. A higher-level instruction to emit a status update can still leak into athlete delivery if the role generating that update still has direct send authority.
Minimum viable implementation inside the workspace
If full runtime enforcement is not available immediately, the first implementation can still enforce the model operationally by requiring that:
- morning plan calls
athlete-comms - evening summary calls
athlete-comms - athlete check-in calls
athlete-comms - nutrition reply calls
athlete-comms - self-assessment calls
athlete-comms - ad hoc athlete replies also call
athlete-comms
That creates one standard workflow path even before deeper platform enforcement exists.
However, this phase must be described honestly as an interim workflow gate, not a true hard gate. It reduces risk, but it does not eliminate bypass risk until direct-send rights are removed elsewhere.
Runtime-level ideal state
The ideal long-term state is platform support that can enforce:
- outbound athlete target is restricted to one agent role
- any non-gateway send attempt fails closed
- only approved final message bodies can be delivered
- cron jobs and other workflow entry points cannot directly deliver to athlete channels
- direct reply rights are removed from all non-
athlete-commsathlete-facing paths
That is the true hard gate.
Risks and tradeoffs
Benefits
- much lower risk of internal-note leakage
- much lower risk of vague or non-professional athlete wording
- consistent athlete-facing tone across workflows
- clear boundary between content generation and delivery
- auditable responsibility for final athlete messaging
- scalable tuning model for multiple athletes
Costs
- extra workflow step before send
- more architecture to maintain
- potential latency increase for some replies
- need for careful design so the gate does not rewrite away the intended coaching meaning
Failure modes to guard against
athlete-commsbecoming too stylistic and changing content meaningathlete-commsbecoming too generic and flattening athlete individuality- direct-send legacy paths remaining in place and bypassing the gate
- tuning files becoming vague or contradictory
Recommendation
Proceed with this proposal, but only as a true authority-boundary project.
The recurring issue is structural, not just instructional. A dedicated athlete-comms hard gate is the cleanest way to separate:
- coaching decision-making
- language review
- final delivery
The recommended design is:
- create
athlete-commsas an official OpenClaw agent - run it on demand, not as a full-time conversational agent
- make it the only approved outbound athlete delivery authority
- remove direct send rights from all other athlete-facing paths
- treat any remaining direct-send path as an implementation blocker for calling the system a hard gate
- give it a two-layer tuning model:
- global communication policy
- athlete-specific communication profile
Proposed implementation phases
Phase 1, proposal and interface design
- finalize the authority model
- define the handoff schema
- define the global policy file
- define the athlete tuning file
- define block, rewrite, and approve behavior
Phase 2, workspace implementation
- add the
athlete-commsagent - create the policy and athlete tuning files
- route major athlete-facing workflows through the gate
- test with dry-run and operator review mode first
Phase 3, enforcement hardening
- remove or deprecate direct-send paths where possible
- migrate cron workflows to the gate
- add failure-closed behavior when the gate blocks or is unavailable
Open questions
The following questions should be resolved before implementation:
- Should
athlete-commsbe allowed to send automatically after rewrite, or should some message types require Coach Luca confirmation first? - Which message classes should be mandatory-review from day one?
- Should there be an operator-review mode during early rollout?
- What exact file paths should be used for the global policy and athlete tuning profile?
- How much athlete-specific tuning should be allowed before it starts weakening the global professional standard?
- What exact runtime or delivery-layer change is required to remove direct send rights from all non-
athlete-commsathlete-facing paths? - Which current cron jobs, direct reply paths, and workflow entry points would still be able to bypass the gate if implementation stopped at the workflow layer?
Draft decision
Recommended answer to the design questions raised here:
- Should this agent run full-time? No. It should exist as an official agent, but run on demand as the final outbound gate.
- Should this be an official OpenClaw agent? Yes. It should be a formal roster role with clear authority boundaries, not just an informal helper skill.
- What makes this proposal succeed? Direct send rights must be removed from all other athlete-facing paths, including other agents and processes. Without that, the system is only operating in workflow-gate mode, not true hard-gate mode.