name: organization-management description: Manage organizations and positions — founding, chartering, membership, duties, requirements, appointments, and dissolution.
Feature: Organization Lifecycle Manage the full lifecycle of organizations in the RoleX world. Organizations group individuals via membership and can have a charter.
Scenario: found — create an organization Given you want to create a new organization When you call use with !org.found Then a new organization node is created under society And individuals can be hired into it And a charter can be defined for it And parameters are: """ locator: "!org.found" args: content: "Feature: Deepractice\n An AI agent framework company" id: "dp" alias: ["deepractice"] # optional """
Scenario: charter — define the organization's mission Given an organization needs a formal mission and governance When you call use with !org.charter Then the charter is stored under the organization And parameters are: """ locator: "!org.charter" args: org: "dp" content: "Feature: Build great AI\n Scenario: Mission\n Given we believe AI agents need identity\n Then we build frameworks for role-based agents" """
Scenario: dissolve — dissolve an organization Given an organization is no longer needed When you call use with !org.dissolve Then the organization is archived to past And parameters are: """ locator: "!org.dissolve" args: org: "dp" """
Feature: Membership Manage who belongs to an organization. Membership is a link between organization and individual.
Scenario: hire — add a member Given an individual should join an organization When you call use with !org.hire Then a membership link is created between the organization and the individual And the individual can then be appointed to positions And parameters are: """ locator: "!org.hire" args: org: "dp" individual: "sean" """
Scenario: fire — remove a member Given an individual should leave an organization When you call use with !org.fire Then the membership link is removed And parameters are: """ locator: "!org.fire" args: org: "dp" individual: "sean" """
Feature: Position Lifecycle Manage the full lifecycle of positions in the RoleX world. Positions are independent entities that can be charged with duties and linked to individuals via appointment.
Scenario: establish — create a position Given you want to define a new role or position When you call use with !position.establish Then a new position entity is created under society And it can be charged with duties and individuals can be appointed to it And parameters are: """ locator: "!position.establish" args: content: "Feature: Backend Architect\n Responsible for system design and API architecture" id: "architect" """
Scenario: charge — assign a duty to a position Given a position needs specific responsibilities defined When you call use with !position.charge Then a duty node is created under the position And individuals appointed to this position inherit the duty And parameters are: """ locator: "!position.charge" args: position: "architect" content: "Feature: Design systems\n Scenario: API design\n Given a new service is needed\n Then design the API contract first" id: "design-systems" """
Scenario: require — declare a required skill for a position Given a position requires individuals to have specific skills When you call use with !position.require Then a requirement node is created under the position And individuals appointed to this position will automatically receive the skill And upserts by id — if the same id exists, it replaces the old one And parameters are: """ locator: "!position.require" args: position: "architect" content: "Feature: System Design\n Scenario: When to apply\n Given a new service is planned\n Then design the architecture before coding" id: "system-design" """
Scenario: abolish — abolish a position Given a position is no longer needed When you call use with !position.abolish Then the position is archived to past And parameters are: """ locator: "!position.abolish" args: position: "architect" """
Feature: Appointment Manage who holds a position. Appointment is a link between position and individual.
Scenario: appoint — assign an individual to a position Given an individual should hold a position When you call use with !position.appoint Then an appointment link is created between the position and the individual And all required skills (from require) are automatically trained into the individual And existing skills with the same id are replaced (upsert) And parameters are: """ locator: "!position.appoint" args: position: "architect" individual: "sean" """
Scenario: dismiss — remove an individual from a position Given an individual should no longer hold a position When you call use with !position.dismiss Then the appointment link is removed And parameters are: """ locator: "!position.dismiss" args: position: "architect" individual: "sean" """
Feature: Common Workflows
Scenario: Full organization setup with positions Given you need an organization with positions and members Then follow this sequence: """ 1. locator: "!org.found" args: { id: "dp", content: "Feature: Deepractice" } 2. locator: "!org.charter" args: { org: "dp", content: "Feature: Mission\n ..." } 3. locator: "!position.establish" args: { id: "architect", content: "Feature: Architect" } 4. locator: "!position.charge" args: { position: "architect", content: "Feature: Design\n ...", id: "design" } 5. locator: "!position.require" args: { position: "architect", content: "Feature: Skill\n ...", id: "skill" } 6. locator: "!org.hire" args: { org: "dp", individual: "sean" } 7. locator: "!position.appoint" args: { position: "architect", individual: "sean" } """ And step 7 appoint will auto-train the required skill into sean