How to Configure Agent Authority and Story-Driven Development Constitution Rules in aios-core
Configure Agent Authority by editing the authority table in /.aios-core/constitution.md and declaring matching exclusive_authority blocks in agent definitions, while Story-Driven Development requires creating valid story YAML files in docs/stories/{id}/story.yaml that pass the constitutional gate in dev-develop-story.md.
The aios-core framework from SynkraAI enforces a strict constitutional governance model where agents operate under defined authorities and development is strictly story-driven. Understanding how to configure these Agent Authority and Story-Driven Development constitution rules in aios-core ensures your AI agents respect exclusive operational boundaries and only execute code against validated stories.
Where the Constitution Rules Live
The Synkra AIOS Constitution serves as the master source of truth for all governance rules. It resides in [/.aios-core/constitution.md](https://github.com/SynkraAI/aios-core/blob/main/.aios-core/constitution.md) and defines two critical principles:
- Agent Authority (lines 30-50): Establishes exclusive rights for specific Git operations, versioning, and decision-making
- Story-Driven Development (lines 56-68): Mandates that no code may be written without a valid story containing acceptance criteria and tasks
These principles are enforced by constitutional gates implemented in specific task files and agent definitions throughout the repository.
Configuring Agent Authority
Updating the Constitutional Authority Table
Agent Authority rules are defined in a markdown table within constitution.md (lines 42-50). Each row maps an authority to its exclusive agent(s).
To add a new authority, edit the table:
| Autoridade | Agente Exclusivo |
|--------------------------|------------------|
| git push | @devops |
| PR creation | @devops |
| Release/Tag | @devops |
| Story creation | @sm, @po |
| Architecture decisions | @architect | <!-- NEW -->
| Quality verdicts | @qa |
Commit this change to /.aios-core/constitution.md. The constitutional gate automatically references this table to validate agent permissions.
Declaring Exclusive Authority in Agent Definitions
Each agent must declare its exclusive_authority block in its definition file under /.aios-core/development/agents/<agent>.md (e.g., architect.md, devops.md).
For example, in /.aios-core/development/agents/architect.md:
exclusive_authority:
note: 'CRITICAL: This is the ONLY agent authorized to make architecture decisions'
rationale: 'Centralising architecture prevents conflicting designs'
enforcement: 'Git hooks + AIOS gate checks'
The UnifiedActivationPipeline reads this YAML during agent activation and validates the exclusive_authority list against the Constitution at runtime.
Validating Authority with Pre-Push Gates
Run the quality-gate test to confirm new authorities are respected:
*pre-push # runs all gates, including Agent Authority validation
If a non-authorized agent (e.g., @dev) attempts to execute a restricted operation like an architecture decision or git push, the gate aborts with BLOCK severity and prevents the action.
Configuring Story-Driven Development
Creating Valid Story Files
Story-Driven Development requires every story to exist as a YAML file under docs/stories/{storyId}/story.yaml. The constitutional gate in /.aios-core/development/tasks/dev-develop-story.md validates these fields:
# docs/stories/3.14/story.yaml
id: "3.14"
title: "Add GitHub release automation"
status: "Ready" # must NOT be "Draft"
acceptance_criteria:
- "Release tag created"
- "Changelog generated"
tasks:
- "Implement release script"
Required keys include id (string), title (string), status (cannot be "Draft"), acceptance_criteria (list), and tasks (list). Missing any field results in a BLOCK status from the gate.
Understanding the Constitutional Gate
The enforcement mechanism resides in [/.aios-core/development/tasks/dev-develop-story.md](https://github.com/SynkraAI/aios-core/blob/main/.aios-core/development/tasks/dev-develop-story.md) at lines 92-106 under the Constitutional Gates section.
This gate performs four validations:
- Story file exists at
docs/stories/{storyId}/story.yaml - Status is not
"Draft" - Acceptance criteria are present and non-empty
- At least one task or sub-task is defined
If any check fails, the gate returns BLOCK severity and the *develop {storyId} command aborts immediately.
Running Story Development Tasks
To start development on a story, run:
*develop 3.14
This command triggers the constitutional gate first. Only after the story passes validation (status is "Ready", criteria exist, tasks defined) will the agent proceed with implementation.
To update a story, simply modify the YAML file (e.g., add more acceptance criteria) and commit. The gate always reads the latest file; no additional configuration is required.
Complete Workflow Example
Here is a complete workflow demonstrating both constitutional rules in action:
# 1️⃣ Verify story exists and is ready (Story-Driven Development gate)
*develop 3.14
# 2️⃣ Agent authority enforcement during development
# - @dev writes code
# - @architect decides on architecture (exclusive authority)
# - @devops will later push the changes (exclusive git push authority)
# 3️⃣ Pre-push quality gate (includes both constitution checks)
*pre-push # runs lint, test, typecheck, CodeRabbit, and Agent Authority gates
# 4️⃣ Push (only @devops can execute)
*push # succeeds because the current agent is @devops
Common Pitfalls & How to Fix Them
| Symptom | Cause (Constitution) | Fix |
|---|---|---|
*develop aborts with "Story file not found" |
Story-Driven Development gate cannot locate docs/stories/<id>/story.yaml |
Create the YAML file in the correct path and commit |
*push blocked by "Only @devops can git push" |
Agent Authority gate detects a non-devops agent attempting a push | Switch to @devops (*activate devops) or delegate the push to the devops agent |
| Pre-push fails on "CRITICAL CodeRabbit issues" | Quality-First gate (not about authority or story) | Resolve the reported CodeRabbit issues, then rerun *pre-push |
Summary
- The Synkra AIOS Constitution in
/.aios-core/constitution.mddefines Agent Authority (lines 30-50) and Story-Driven Development (lines 56-68) as non-negotiable principles. - Agent Authority requires updating the constitutional table and declaring
exclusive_authorityblocks in agent definitions under/.aios-core/development/agents/. - Story-Driven Development mandates YAML story files in
docs/stories/{id}/story.yamlwith required fields enforced by the gate in/.aios-core/development/tasks/dev-develop-story.md. - Always run
*pre-pushto validate constitutional compliance before Git operations.
Frequently Asked Questions
What happens if an agent tries to execute an action outside its authority?
The Agent Authority constitutional gate detects the violation during the *pre-push check or when the agent attempts the action, aborting the operation with BLOCK severity. According to the implementation in /.aios-core/constitution.md lines 30-50, only agents listed in the authority table may execute their mapped operations.
Can I disable Story-Driven Development for quick fixes or hotfixes?
No. The Story-Driven Development principle defined in /.aios-core/constitution.md lines 56-68 is non-negotiable. The constitutional gate in /.aios-core/development/tasks/dev-develop-story.md (lines 92-106) will block any *develop command if a valid story file does not exist at docs/stories/{id}/story.yaml with status not equal to "Draft".
How do I add a new agent with exclusive authority?
First, add the agent and its authority to the table in /.aios-core/constitution.md (around lines 42-50). Then create or edit the agent definition file at /.aios-core/development/agents/<agent-name>.md and include an exclusive_authority block with note, rationale, and enforcement fields. Finally, run *pre-push to validate the configuration.
What fields are required in a story YAML file?
According to the constitutional gate implementation in /.aios-core/development/tasks/dev-develop-story.md, a valid story file at docs/stories/{id}/story.yaml must include: id (string), title (string), status (must not be "Draft"), acceptance_criteria (list), and tasks (list). Missing any of these fields results in a BLOCK status from the gate.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →