mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
52 lines
2.2 KiB
Python
52 lines
2.2 KiB
Python
"""Verify agents_config.* tables are derived from foundation, not duplicated.
|
|||
|
|
|
||
|
|
The migration replaces the hand-maintained constants in agents_config with
|
||
|
|
expressions that compute from foundation.AGENTS. After this task:
|
||
|
|
- AGENT_ROLE_MAP[slug] == foundation.role_for_slug(slug).value (string-typed)
|
||
|
|
- AGENT_TEAM_MAP[slug] == foundation.team_for_slug(slug).value
|
||
|
|
- CELL_MEMBERS[team_value] == sorted(foundation.slugs_for_team(...))
|
||
|
|
"""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from roboco.agents_config import AGENT_ROLE_MAP, AGENT_TEAM_MAP, CELL_MEMBERS
|
||
|
|
from roboco.foundation import identity
|
||
|
|
|
||
|
|
|
||
|
|
def test_agent_role_map_matches_foundation() -> None:
|
||
|
|
for slug, role_str in AGENT_ROLE_MAP.items():
|
||
|
|
assert role_str == identity.role_for_slug(slug).value, (
|
||
|
|
f"role drift for {slug!r}: agents_config has {role_str!r}, "
|
||
|
|
f"foundation has {identity.role_for_slug(slug).value!r}"
|
||
|
|
)
|
||
|
|
# Every slug in foundation (except system sentinel) appears in AGENT_ROLE_MAP.
|
||
|
|
foundation_slugs = set(identity.AGENTS) - {"system"}
|
||
|
|
config_slugs = set(AGENT_ROLE_MAP)
|
||
|
|
assert foundation_slugs <= config_slugs, (
|
||
|
|
f"slugs in foundation but not agents_config: {foundation_slugs - config_slugs}"
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def test_agent_team_map_matches_foundation() -> None:
|
||
|
|
for slug, team_str in AGENT_TEAM_MAP.items():
|
||
|
|
assert team_str == identity.team_for_slug(slug).value, (
|
||
|
|
f"team drift for {slug!r}: agents_config={team_str!r}, "
|
||
|
|
f"foundation={identity.team_for_slug(slug).value!r}"
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def test_cell_members_matches_foundation() -> None:
|
||
|
|
"""CELL_MEMBERS keys are team-strings; values are sorted slug lists."""
|
||
|
|
for team in (identity.Team.BACKEND, identity.Team.FRONTEND, identity.Team.UX_UI):
|
||
|
|
config_members = CELL_MEMBERS.get(team.value, [])
|
||
|
|
foundation_members = sorted(identity.slugs_for_team(team))
|
||
|
|
assert sorted(config_members) == foundation_members, (
|
||
|
|
f"cell members drift for {team.value!r}: "
|
||
|
|
f"config={sorted(config_members)}, foundation={foundation_members}"
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def test_head_marketing_team_is_board_in_agents_config() -> None:
|
||
|
|
"""Resolves the head-marketing.team drift via the foundation derivation."""
|
||
|
|
assert AGENT_TEAM_MAP["head-marketing"] == "board"
|