research-agency-scope-rules

Research: agency functional-agent scope + composition rules

Metadata

Statusdone
Assignedagent-2369
Agent identityf51439356729d112a6c404803d88015d5b44832c6c584c62b96732b63c2b0c7e
Modelclaude:opus
Created2026-05-04T17:39:12.067705738+00:00
Started2026-05-04T18:37:10.347184829+00:00
Completed2026-05-04T18:44:17.470148173+00:00
Tagsagency,sync,research, eval-scheduled
Eval score0.91
└ blocking impact0.90
└ completeness0.94
└ coordination overhead0.96
└ correctness0.92
└ downstream usability0.95
└ efficiency0.90
└ intent fidelity0.85
└ style adherence0.93

Description

Description

Agency v1.2.4 carries a scope field on every primitive: task | meta:assigner | meta:evaluator | meta:evolver | meta:agent_creator. This makes functional-agent identity (who composes assigners vs evaluators vs evolvers) a first-class primitive attribute. Workgraph encodes the same idea via TASK ID prefixes (.evaluate-*, .place-*, .assign-*, .flip-*) and pins them to claude:haiku in CLAUDE.md. Distinct mechanisms, similar semantic intent.

Agency also ships a separate watched config file ~/.agency/composition-rules.csv (per the agency-composition-config skill) with columns: agent_type, rule, max_role_components, max_desired_outcomes, max_trade_off_configs, all_projects, project_ids. This caps composition selection at assignment time. Workgraph has no equivalent — composition rules are hard-wired.

Specific things to investigate

  • Read src/agency/prompt.rs and src/commands/assign.rs to understand wg's composition logic for the four functional agents.
  • Read src/commands/evaluate.rs and the .evaluate-* task naming scheme — how is the evaluator agent currently composed?
  • Does the four-agent split (assigner / evaluator / evolver / agent_creator) line up with wg's .place-* / .evaluate-* / evolve / agent_create surfaces?
  • Should wg adopt a scope field on primitives, OR keep task-tag implicit, OR run both side by side?
  • Should wg implement ~/.agency/composition-rules.csv as a watched overlay, or extend wg config (.workgraph/config.toml)? Watched-file semantics matter for live edits without daemon restart.
  • Cross-reference: how does the user override per-role models (CLAUDE.md mentions [models.evaluator] / [models.assigner])? That config surface ALREADY treats evaluator/assigner as named functional-agent slots — extend it.

Deliverable

wg log entry with:

  • Mapping table: agency scope value → wg task-tag prefix → wg config key ([models.X])
  • Recommendation: add primitive scope field (yes/no) + add composition-rules.csv overlay (yes/no)
  • File:line citations in src/agency/prompt.rs, src/commands/assign.rs, src/commands/evaluate.rs

Validation

  • Mapping table covers all four functional agents
  • Decision documented for primitive scope field (additive vs not)
  • Decision documented for composition-rules.csv (adopt path vs not)
  • Cites the [models.evaluator] / [models.assigner] config surface and proposes whether composition-rules.csv lives next to it or in ~/.agency/

Depends on

Required by

Log