Skip to content

#1214 Allow an artifact to belong to more than one collection - #1219

Merged
williamthorsen merged 1 commit into
mainfrom
1214
Aug 6, 2026
Merged

#1214 Allow an artifact to belong to more than one collection#1219
williamthorsen merged 1 commit into
mainfrom
1214

Conversation

@williamthorsen

Copy link
Copy Markdown
Owner

What

A library artifact can now belong to more than one collection: The vetted collections may overlap, and a collection outside the disposition scheme is now a plain bundle whose membership makes no claim about its members. Exclusivity remains only for the two dispositions that assert an absence: A standalone artifact belongs to no collection, and a triage artifact holds no vetted membership.

Why

Overlap is the normal case for collections a consumer composes: a curated set and a purpose-specific bundle naturally share members. The one-collection-per-artifact rule was never argued for -- it held by construction when the original collections were the values of one mutually exclusive status enum -- and it blocked the purpose-collection work planned in #885.

Details

🎉 Features

  • The claim map holds every claim an artifact carries rather than the first: a vetted collection's closure check passes when a reached artifact holds any permitted claim, and defect messages name every disposition held.
  • A plain bundle (a collection outside the disposition scheme) neither satisfies the coverage check nor conflicts with any disposition, so purpose bundles can claim triage or vetted artifacts freely.
  • The double-claim defect narrowed to the two real contradictions: a standalone artifact claimed by any collection, and a triage artifact claimed by a vetted collection.
  • The dispositions section of codeassembly-content-specification states the many-to-many model.

🧪 Tests

  • Coverage tests exercise the legal overlaps (two vetted collections; a plain bundle alongside triage) and both contradictions.
  • Closure tests exercise any-permitted-claim acceptance, multi-disposition defect messages, and an artifact carrying no claim.

Closes #1214

A library artifact can now belong to more than one collection. The vetted collections may overlap, and a collection outside the disposition scheme is a plain bundle: membership in one claims nothing, so it neither satisfies the coverage check nor conflicts with any disposition.

Exclusivity survives only where a disposition asserts an absence: a standalone artifact still tolerates no membership, and a triage artifact no vetted membership. The dispositions section of the content specification describes the resulting model.
@williamthorsen williamthorsen added feature Added or improved external functionality scope:agents labels Aug 6, 2026
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown

Dependency audit

Production dependency audit passed.

@williamthorsen
williamthorsen marked this pull request as ready for review August 6, 2026 14:40
@williamthorsen williamthorsen self-assigned this Aug 6, 2026
@williamthorsen
williamthorsen merged commit 0cfb5be into main Aug 6, 2026
3 checks passed
@williamthorsen
williamthorsen deleted the 1214 branch August 6, 2026 14:46
williamthorsen added a commit that referenced this pull request Aug 7, 2026
…ssembly-mcp-v0.2.4 codeassembly-v0.6.0

codeassembly-v0.6.0
- #794 feat: Guide kb-add note placement with the store's declared taxonomy (#1223)
- #1111 feat: Declare which harnesses sync targets (#1221)
- #1214 feat: Allow an artifact to belong to more than one collection (#1219)
- #1186 drop!: Dissolve `common-mistakes` into its consumers' guidance (#1217)
- deps: Upgrade all deps to latest version
- #1203 fix: Bar acceptance-criteria revision prompts to genuine conflicts (#1212)
- #1196 feat: Add the .kb/taxonomy.yaml format with drift reporting and back-fill (#1210)
- #1165 feat: Make a vetted subset of the library declarable (#1207)
- #1197 feat: Report the retired `harnesses:` frontmatter key from `validate` (#1204)
- #963 feat!: Rename the harness id to rovo and qualify the frontmatter key (#1199)
- #1188 drop!: Retire the bundled Bitbucket inline-comment script (#1198)
- #1187 feat: Gate the boolean prefix on a test and add the tail rule it rests on (#1195)

factory-v0.2.4
- deps: Upgrade all deps to latest version
- deps: Upgrade all deps to latest version
- #1209 refactor: Clear factory's remaining lint violations and retire both deferral lists (#1216)
- #1208 refactor: Clear the visualizations lint violations and retire six rule deferrals (#1213)

kb-v0.4.0
- #794 feat: Guide kb-add note placement with the store's declared taxonomy (#1223)
- #1196 feat: Add the .kb/taxonomy.yaml format with drift reporting and back-fill (#1210)

codeassembly-lifecycle-v0.3.0
- #963 feat!: Rename the harness id to rovo and qualify the frontmatter key (#1199)

codeassembly-mcp-v0.2.4
- #1206 refactor: Retire fleet's lint deferrals (#1211)
- #1200 tooling: Retire mcp's lint deferrals and prune the dead root entries (#1205)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature Added or improved external functionality scope:agents

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Collection membership is exclusive, so an artifact cannot belong to two collections

1 participant