Compose one public profile into a deterministic bundle #3

Closed
opened 2026-07-16 08:00:19 +00:00 by coilyco-ops · 1 comment
Member

Parent

#1

What to build

Deliver the first end-to-end executable slice. A public fixture KDL profile and source set should pass through the real parser and resolver into an immutable bundle containing composed instructions and a v0.1 manifest. Repeated composition from identical inputs must reuse the same result.

Acceptance criteria

  • The implementation language and package layout are established with Ward build, test, lint, and install verbs.
  • A CLI command composes the public fixture without network access.
  • The fixture exercises the built-in person-source path that #10 will populate, without requiring a generic policy plug-in layer.
  • Output is content-addressed, deterministic, and written atomically.
  • The resolver emits the reviewed structured decision trace while making choices rather than reconstructing an explanation afterward.
  • The bundle retains that trace and the interactive command renders a bounded one-screen composition summary.
  • Repeated identical runs reuse the cache and do not rewrite files.
  • Invalid KDL, missing required sources, and an empty result fail with actionable diagnostics.
  • Unit and end-to-end tests cover generation, cache reuse, and partial-write prevention.
  • Generated bundles are ignored and absent from git.

Blocked by

  • Blocked by #2

Execution type

AFK - the reviewed v0.1 contracts determine the path.

## Parent #1 ## What to build Deliver the first end-to-end executable slice. A public fixture KDL profile and source set should pass through the real parser and resolver into an immutable bundle containing composed instructions and a v0.1 manifest. Repeated composition from identical inputs must reuse the same result. ## Acceptance criteria - [ ] The implementation language and package layout are established with Ward build, test, lint, and install verbs. - [ ] A CLI command composes the public fixture without network access. - [ ] The fixture exercises the built-in person-source path that #10 will populate, without requiring a generic policy plug-in layer. - [ ] Output is content-addressed, deterministic, and written atomically. - [ ] The resolver emits the reviewed structured decision trace while making choices rather than reconstructing an explanation afterward. - [ ] The bundle retains that trace and the interactive command renders a bounded one-screen composition summary. - [ ] Repeated identical runs reuse the cache and do not rewrite files. - [ ] Invalid KDL, missing required sources, and an empty result fail with actionable diagnostics. - [ ] Unit and end-to-end tests cover generation, cache reuse, and partial-write prevention. - [ ] Generated bundles are ignored and absent from git. ## Blocked by - Blocked by #2 ## Execution type AFK - the reviewed v0.1 contracts determine the path.
Author
Member

Shipped in 9fe7619.

Acceptance criteria:

  • Language and layout: Go engine (module forgejo.coilysiren.me/coilyco-flight-deck/agent-compose) with cmd/agent-compose plus internal/{schema,person,resolver,bundle,compose}; Ward gains build, test, lint, install, and tidy verbs, and ward exec test now runs Go tests plus the hook sweep.
  • CLI composes the fixtures without network access: agent-compose compose testdata/contracts/.kdl.
  • Built-in person-source path: internal/person embeds a fixture-grade person.kdl (engineer role, three bound personalities) behind the docs/person-contract.md shape; #10 replaces the roster, not the contract. No provider plug-in layer.
  • Deterministic and atomic: bundles are keyed by a hash over the request, person source, decisions, and referenced content bytes; materialization stages beside the target and renames atomically. Per the #13 review the key is an internal cache key only - no digests or versions appear in the manifest.
  • Trace emitted while resolving: selected / excluded / shadowed / fallback / delivered decisions with human-readable reasons land in trace.json, in the simplified shape the review settled on.
  • Bounded one-screen summary: identity line, source list, decision counts, paths.
  • Cache reuse verified by test (second run returns reused, manifest mtime unchanged); a blocked finalize leaves no partial tree and no staging leftovers (also tested).
  • Invalid KDL, unknown nodes, duplicate scalars, bad enums, missing required sources, escaping paths, unknown role/personality, incompatible pairing, and a missing bound skill all fail with actionable diagnostics (tested).
  • Bundles are gitignored; density is exercised end to end - compiled-brief delivers BRIEF.md prose, compiled-full the full skill body, and the two produce different bundle keys.

Closed by Claude Code working the issue queue.

Shipped in 9fe7619. Acceptance criteria: - Language and layout: Go engine (module forgejo.coilysiren.me/coilyco-flight-deck/agent-compose) with cmd/agent-compose plus internal/{schema,person,resolver,bundle,compose}; Ward gains build, test, lint, install, and tidy verbs, and ward exec test now runs Go tests plus the hook sweep. - CLI composes the fixtures without network access: agent-compose compose testdata/contracts/<fixture>.kdl. - Built-in person-source path: internal/person embeds a fixture-grade person.kdl (engineer role, three bound personalities) behind the docs/person-contract.md shape; #10 replaces the roster, not the contract. No provider plug-in layer. - Deterministic and atomic: bundles are keyed by a hash over the request, person source, decisions, and referenced content bytes; materialization stages beside the target and renames atomically. Per the #13 review the key is an internal cache key only - no digests or versions appear in the manifest. - Trace emitted while resolving: selected / excluded / shadowed / fallback / delivered decisions with human-readable reasons land in trace.json, in the simplified shape the review settled on. - Bounded one-screen summary: identity line, source list, decision counts, paths. - Cache reuse verified by test (second run returns reused, manifest mtime unchanged); a blocked finalize leaves no partial tree and no staging leftovers (also tested). - Invalid KDL, unknown nodes, duplicate scalars, bad enums, missing required sources, escaping paths, unknown role/personality, incompatible pairing, and a missing bound skill all fail with actionable diagnostics (tested). - Bundles are gitignored; density is exercised end to end - compiled-brief delivers BRIEF.md prose, compiled-full the full skill body, and the two produce different bundle keys. Closed by Claude Code working the issue queue.
Sign in to join this conversation.
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#3
No description provided.