Make bare acompose emit the complete person data surface #49

Closed
opened 2026-07-23 10:31:04 +00:00 by coilyco-ops · 1 comment
Member

Outcome

Bare acompose remains the single convergence entry point. As part of its normal run, it emits one complete machine-readable person artifact alongside the existing roster and cascade outputs. Consumers such as the AOSH Agent Picker read that artifact without invoking a new subcommand or parsing internal KDL.

Current gap

Person data is split across several partial surfaces:

  • palette-data emits role names, personality names, and colors only.
  • The roster artifact renders purpose, personalities, and named seats as prose.
  • Bundle manifests and traces describe one composed role rather than the whole canonical roster.

The internal person model already knows the complete mapping, but normal acompose convergence does not expose it as structured data.

Contract

The generated artifact should include every public-safe canonical or derived person field that agent-compose can usefully expose:

  • A format marker and schema version.
  • Person name and canonical role order.
  • Every role slug, purpose, ordered personality meld, derived favorite color, and complete named seats.
  • Every seat harness, name, and pronouns.
  • Every personality slug, skill binding, and canonical color.
  • Source provenance sufficient for consumers to identify the embedded person policy.

The export should be derived from the loaded person model rather than maintained as a second hand-written schema subset. When the person model gains another public field, tests should require an explicit export decision so silent drift is impossible.

Integration

  • Bare acompose writes the artifact during ordinary host convergence. No new person-data, export, or picker-specific command is added.
  • Existing palette and roster renderers should derive from the same complete data model or artifact where practical, avoiding parallel partial mappings.
  • The artifact uses the same atomic replacement and ownership protections as other generated outputs.
  • Generated artifacts remain uncommitted.
  • AOSH may consume the result as read-only role orientation while keeping model routing outside agent-compose.

Acceptance criteria

  • One bare acompose run produces roster, cascade, and the complete structured person artifact.
  • The artifact includes all ten roles, including roles without named seats.
  • Purpose, ordered personalities, derived colors, and every configured seat round-trip exactly from the embedded person source.
  • Output is deterministic and versioned.
  • Tests fail when an exportable person field is omitted or when any role disappears.
  • Documentation describes the artifact as part of convergence, not as a separate command.
  • No model choice, reasoning effort, permissions, or runtime authority moves into agent-compose.

Coordination

Coordinate with #10 for canonical person ownership and #15 for the harness association refresh currently in flight. This issue should consume the resulting person model rather than overlap that active work.

## Outcome Bare acompose remains the single convergence entry point. As part of its normal run, it emits one complete machine-readable person artifact alongside the existing roster and cascade outputs. Consumers such as the AOSH Agent Picker read that artifact without invoking a new subcommand or parsing internal KDL. ## Current gap Person data is split across several partial surfaces: * palette-data emits role names, personality names, and colors only. * The roster artifact renders purpose, personalities, and named seats as prose. * Bundle manifests and traces describe one composed role rather than the whole canonical roster. The internal person model already knows the complete mapping, but normal acompose convergence does not expose it as structured data. ## Contract The generated artifact should include every public-safe canonical or derived person field that agent-compose can usefully expose: * A format marker and schema version. * Person name and canonical role order. * Every role slug, purpose, ordered personality meld, derived favorite color, and complete named seats. * Every seat harness, name, and pronouns. * Every personality slug, skill binding, and canonical color. * Source provenance sufficient for consumers to identify the embedded person policy. The export should be derived from the loaded person model rather than maintained as a second hand-written schema subset. When the person model gains another public field, tests should require an explicit export decision so silent drift is impossible. ## Integration * Bare acompose writes the artifact during ordinary host convergence. No new person-data, export, or picker-specific command is added. * Existing palette and roster renderers should derive from the same complete data model or artifact where practical, avoiding parallel partial mappings. * The artifact uses the same atomic replacement and ownership protections as other generated outputs. * Generated artifacts remain uncommitted. * AOSH may consume the result as read-only role orientation while keeping model routing outside agent-compose. ## Acceptance criteria * One bare acompose run produces roster, cascade, and the complete structured person artifact. * The artifact includes all ten roles, including roles without named seats. * Purpose, ordered personalities, derived colors, and every configured seat round-trip exactly from the embedded person source. * Output is deterministic and versioned. * Tests fail when an exportable person field is omitted or when any role disappears. * Documentation describes the artifact as part of convergence, not as a separate command. * No model choice, reasoning effort, permissions, or runtime authority moves into agent-compose. ## Coordination Coordinate with #10 for canonical person ownership and #15 for the harness association refresh currently in flight. This issue should consume the resulting person model rather than overlap that active work.
Author
Member

Commit 967c20b added Role.Briefing as required public person data and landed canonical two-paragraph text for all ten roles. The complete person artifact must export briefing verbatim with preserved paragraph breaks. Purpose remains the concise label, while briefing is the unconditional role charter. Roster rendering now places briefing before seats and personality metadata.

Commit 967c20b added Role.Briefing as required public person data and landed canonical two-paragraph text for all ten roles. The complete person artifact must export briefing verbatim with preserved paragraph breaks. Purpose remains the concise label, while briefing is the unconditional role charter. Roster rendering now places briefing before seats and personality metadata.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agent-compose#49
No description provided.