Move authored prose and configuration out of Go #110

Closed
opened 2026-07-27 20:18:17 +00:00 by coilysiren · 1 comment
Owner

internal/evaluation/evaluation.go currently embeds authored prompts, role-specific cases, review protocol, scoring rules, and rubrics in Go. internal/roster/roster.go also assembles the native personality-swap policy from Go string literals. These are product content and configuration, not engine logic.

Goal

Go owns parsing, validation, selection, and rendering. Files owned by the applicable engine, person profile, or personality library own semantic prose and policy.

Scope

  • Move generic evaluation prompts, run protocol, review rules, and rubrics into engine-owned data assets.
  • Move role-specific evaluation cases into selected person-profile assets.
  • Move the native interactive personality-swap policy into an instruction asset.
  • Audit production Go for other long-form doctrine, prompts, rubrics, role-name maps, or switches whose only purpose is selecting authored content.
  • Leave CLI help, error messages, schema enums, and short renderer glue in Go when they genuinely describe executable behavior.
  • Choose the final profile/library-oriented layout directly so #111 does not move the same prose twice.

Source boundary

  • Engine code must not contain repository URLs, branch names, release tags, external package paths, personal-name conditionals, or other hardcoded source references.
  • Consumers admit local roots through configuration. Fetching and pinning those roots remain outside agent-compose.
  • Agent-compose may record stable logical source IDs and content digests in generated artifacts.

Acceptance

  • The default evaluation packs preserve their current prompts, protocol, rubrics, and scoring behavior after extraction.
  • A selected external profile can supply role-specific evaluation cases without adding a Go role-name branch.
  • Profiles without custom cases receive the generic engine-owned cases.
  • Roster generation reads the native swap policy from an authored asset.
  • The audit records every production Go location reviewed and either extracts it or explains why it remains executable code.
  • Focused tests cover missing, malformed, conflicting, and successfully loaded assets.
  • Documentation describes ownership and extension points.
  • ward exec test and ward exec smoke pass.

Related: #111 defines the person-profile and personality-library boundary that these assets must respect.

Execution contract for Terra medium

Sequencing

The goal agent establishes the profile and personality-library data model from issue 111 before moving content. The goal agent does not create a temporary second layout that issue 111 must move again. Both issues may share one implementation series, but the resolved loader boundary precedes asset extraction.

Final ownership boundary

  • Engine-owned assets contain the generic evaluation plan, generic prompts, run protocol, score scales, review rules, rubrics, and the native interactive personality-swap instruction.
  • A person profile owns its role skills, invariant, role-specific copy contracts, role-specific evaluation matrices, and role inspirations.
  • A personality library owns personality bindings, definitions, aliases, identity primitives, and personality inspirations.
  • Go owns typed schemas, parsing, validation, fallback selection, deterministic rendering, digesting, and diagnostics.

The native personality-swap instruction is engine-owned because its confirmation, fixed-role, slash-goal, and lifetime rules apply to every profile. A profile or library cannot replace that policy.

Evaluation asset behavior

  • Engine assets provide one complete generic evaluation matrix.
  • A profile may provide one complete custom matrix for a role. A custom matrix replaces the generic matrix for that role as one named unit. The loader does not field-merge generic and custom matrices.
  • A role without a custom matrix receives the generic matrix.
  • Custom matrices may declare arbitrary named lanes and cases while retaining typed bundle model class, prompt, rubric reference, and review metadata.
  • The engine permits no silent evaluation opt-out. A loaded role always resolves either a custom matrix or the generic fallback.

Loading and validation

  • Shipped assets are embedded in the binary from ordinary reviewable data or Markdown files.
  • External assets resolve only beneath admitted local profile or library roots.
  • Missing required assets, unknown fields, duplicate logical IDs, invalid references, and divergent copies fail before rendering.
  • Generated artifacts record logical IDs and SHA-256 content digests. They never expose a local filesystem path.
  • Extraction preserves the current semantic prompt, protocol, rubric, score, and swap-policy behavior. Formatting changes are allowed only when canonical encoding requires them.

Audit artifact

The goal agent adds a focused content-ownership document that lists every production Go location reviewed. Each entry names the extracted asset or explains why the remaining text is executable behavior such as CLI help, an error, a schema token, or short renderer glue. The audit explicitly covers internal/evaluation/evaluation.go, internal/roster/roster.go, production role-name maps, and long-form string literals under internal/ and cmd/.

Compatibility and done condition

  • The v1.x line continues reading the legacy complete-person package layout.
  • The default and legacy external packages render equivalent role, evaluation, roster, overlay, palette, and bundle behavior after extraction.
  • Focused tests cover generic fallback, custom replacement, malformed assets, missing assets, duplicate IDs, divergent content, and deterministic output.
  • Documentation describes the engine, profile, library, and consumer ownership boundaries.
  • ward exec test and ward exec smoke pass.
  • The implementation lands on canonical main and closes this issue.

Reconciliation with role skills

#121 owns the migration of long-form role briefings into canonical roles/<slug>/SKILL.md sources and the compact startup identity renderer. This issue extracts engine, evaluation, and native-adaptation content into the final ownership layout without creating another role-prose source. #116 supplies final Engineer and Ops content inside the role-skill slice.

`internal/evaluation/evaluation.go` currently embeds authored prompts, role-specific cases, review protocol, scoring rules, and rubrics in Go. `internal/roster/roster.go` also assembles the native personality-swap policy from Go string literals. These are product content and configuration, not engine logic. ## Goal Go owns parsing, validation, selection, and rendering. Files owned by the applicable engine, person profile, or personality library own semantic prose and policy. ## Scope * Move generic evaluation prompts, run protocol, review rules, and rubrics into engine-owned data assets. * Move role-specific evaluation cases into selected person-profile assets. * Move the native interactive personality-swap policy into an instruction asset. * Audit production Go for other long-form doctrine, prompts, rubrics, role-name maps, or switches whose only purpose is selecting authored content. * Leave CLI help, error messages, schema enums, and short renderer glue in Go when they genuinely describe executable behavior. * Choose the final profile/library-oriented layout directly so #111 does not move the same prose twice. ## Source boundary * Engine code must not contain repository URLs, branch names, release tags, external package paths, personal-name conditionals, or other hardcoded source references. * Consumers admit local roots through configuration. Fetching and pinning those roots remain outside agent-compose. * Agent-compose may record stable logical source IDs and content digests in generated artifacts. ## Acceptance * The default evaluation packs preserve their current prompts, protocol, rubrics, and scoring behavior after extraction. * A selected external profile can supply role-specific evaluation cases without adding a Go role-name branch. * Profiles without custom cases receive the generic engine-owned cases. * Roster generation reads the native swap policy from an authored asset. * The audit records every production Go location reviewed and either extracts it or explains why it remains executable code. * Focused tests cover missing, malformed, conflicting, and successfully loaded assets. * Documentation describes ownership and extension points. * `ward exec test` and `ward exec smoke` pass. Related: #111 defines the person-profile and personality-library boundary that these assets must respect. ## Execution contract for Terra medium ### Sequencing The goal agent establishes the profile and personality-library data model from [issue 111](https://forgejo.coilysiren.me/coilyco-flight-deck/agent-compose/issues/111) before moving content. The goal agent does not create a temporary second layout that issue 111 must move again. Both issues may share one implementation series, but the resolved loader boundary precedes asset extraction. ### Final ownership boundary * Engine-owned assets contain the generic evaluation plan, generic prompts, run protocol, score scales, review rules, rubrics, and the native interactive personality-swap instruction. * A person profile owns its role skills, invariant, role-specific copy contracts, role-specific evaluation matrices, and role inspirations. * A personality library owns personality bindings, definitions, aliases, identity primitives, and personality inspirations. * Go owns typed schemas, parsing, validation, fallback selection, deterministic rendering, digesting, and diagnostics. The native personality-swap instruction is engine-owned because its confirmation, fixed-role, slash-goal, and lifetime rules apply to every profile. A profile or library cannot replace that policy. ### Evaluation asset behavior * Engine assets provide one complete generic evaluation matrix. * A profile may provide one complete custom matrix for a role. A custom matrix replaces the generic matrix for that role as one named unit. The loader does not field-merge generic and custom matrices. * A role without a custom matrix receives the generic matrix. * Custom matrices may declare arbitrary named lanes and cases while retaining typed bundle model class, prompt, rubric reference, and review metadata. * The engine permits no silent evaluation opt-out. A loaded role always resolves either a custom matrix or the generic fallback. ### Loading and validation * Shipped assets are embedded in the binary from ordinary reviewable data or Markdown files. * External assets resolve only beneath admitted local profile or library roots. * Missing required assets, unknown fields, duplicate logical IDs, invalid references, and divergent copies fail before rendering. * Generated artifacts record logical IDs and SHA-256 content digests. They never expose a local filesystem path. * Extraction preserves the current semantic prompt, protocol, rubric, score, and swap-policy behavior. Formatting changes are allowed only when canonical encoding requires them. ### Audit artifact The goal agent adds a focused content-ownership document that lists every production Go location reviewed. Each entry names the extracted asset or explains why the remaining text is executable behavior such as CLI help, an error, a schema token, or short renderer glue. The audit explicitly covers `internal/evaluation/evaluation.go`, `internal/roster/roster.go`, production role-name maps, and long-form string literals under `internal/` and `cmd/`. ### Compatibility and done condition * The v1.x line continues reading the legacy complete-person package layout. * The default and legacy external packages render equivalent role, evaluation, roster, overlay, palette, and bundle behavior after extraction. * Focused tests cover generic fallback, custom replacement, malformed assets, missing assets, duplicate IDs, divergent content, and deterministic output. * Documentation describes the engine, profile, library, and consumer ownership boundaries. * `ward exec test` and `ward exec smoke` pass. * The implementation lands on canonical `main` and closes this issue. ## Reconciliation with role skills #121 owns the migration of long-form role briefings into canonical `roles/<slug>/SKILL.md` sources and the compact startup identity renderer. This issue extracts engine, evaluation, and native-adaptation content into the final ownership layout without creating another role-prose source. #116 supplies final Engineer and Ops content inside the role-skill slice.
coilyco-ops changed title from Unexpect prose / config sitting in golang code to Move authored prose and configuration out of Go 2026-07-27 21:13:01 +00:00
Member

Landed on canonical main through daa9996, completing the extraction contract begun by earlier v1.x commits. Generic evaluation policy is engine-owned data, profile matrices and role skills are profile assets, personality definitions and aliases are library assets, and native adaptation is an authored instruction asset. The content-ownership audit names every reviewed production location. Focused tests cover generic fallback, complete custom replacement, malformed assets, library conflicts, missing sources, legacy compatibility, and deterministic output. ward exec test and ward exec smoke passed.

Landed on canonical main through daa9996, completing the extraction contract begun by earlier v1.x commits. Generic evaluation policy is engine-owned data, profile matrices and role skills are profile assets, personality definitions and aliases are library assets, and native adaptation is an authored instruction asset. The content-ownership audit names every reviewed production location. Focused tests cover generic fallback, complete custom replacement, malformed assets, library conflicts, missing sources, legacy compatibility, and deterministic output. ward exec test and ward exec smoke passed.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#110
No description provided.