{
"schemaVersion": 2,
"id": "BUI-012",
"priority": "P2",
"role": "mid",
"requiredAccessTags": [
"access:public"
],
"capabilities": [
"implementation",
"documentation",
"focused testing",
"pull-request review"
],
"dependencies": [
{
"kind": "dependency",
"issue": "BUI-011",
"repository": "rusty-bubbletea"
},
{
"kind": "dependency",
"issue": "BUI-013",
"repository": "rusty-lipgloss"
}
],
"seamContracts": [
"SEAM-020-rusty-bubbletea-v1@1.0.0",
"SEAM-021-rusty-lipgloss-v1@1.0.0",
"SEAM-022-rusty-bubbles-v1@1.0.0",
"SEAM-090-docs-projection-v1@1.0.0",
"SEAM-103-rusty-bubbles-docs-v1@1.0.0",
"SEAM-093-rusty-bubbletea-candidate-v1@1.0.0",
"SEAM-094-rusty-bubbles-candidate-v1@1.0.0",
"SEAM-095-rusty-lipgloss-candidate-v1@1.0.0"
],
"acceptanceCriteria": [
"AC-BUI-012-A: The repository-owned result is complete and directly observable: Implement the generic accessible semantic widgets required by the frozen terminal contract.",
"AC-BUI-012-B: Every changed public surface is strongly typed, documented at API and module level, and covered by deterministic happy-path, closed-error, and boundary tests.",
"AC-BUI-012-C: The implemented side matches the agreed interfaces SEAM-020-rusty-bubbletea-v1@1.0.0 (consumer), SEAM-021-rusty-lipgloss-v1@1.0.0 (consumer), SEAM-022-rusty-bubbles-v1@1.0.0 (producer), SEAM-090-docs-projection-v1@1.0.0 (consumer), SEAM-103-rusty-bubbles-docs-v1@1.0.0 (producer), SEAM-093-rusty-bubbletea-candidate-v1@1.0.0 (consumer), SEAM-094-rusty-bubbles-candidate-v1@1.0.0 (producer), SEAM-095-rusty-lipgloss-candidate-v1@1.0.0 (consumer) and the positive and misuse fixtures verify the actual candidate output.",
"AC-BUI-012-D: An independent reviewer confirms the implementation, documentation, tests, dependency direction, and affected-file scope without unresolved findings."
],
"status": "dev-done",
"title": "[BUI-012] Rusty Bubbles",
"summary": "## Outcome\n\nImplement the generic accessible semantic widgets required by the frozen terminal contract.\n\n## Repository ownership\n\n- Owning repository: `rusty-bubbles`\n- Required repository access: `rusty-bubbles`\n- Write-owned paths: `src`, `tests`, `docs`, `examples`, `Cargo.toml`\n- This Issue owns one independently reviewable repository result. It does not merge another repository's change.\n\n## Exact implementation targets\n\n- `Cargo.toml`\n- `docs/src/lib.rs`\n- `examples/src/lib.rs`\n- `src/lib.rs`\n- `tests/src/lib.rs`\n\n## Implementation requirements\n\n- Implement the smallest complete change that proves the stated outcome; preserve the existing public API unless an agreed interface below explicitly changes it.\n- Keep parsing/admission, domain state transition, effect execution, and renderer materialization in separate modules or traits where applicable.\n- Reject invalid states at construction or compilation, propagate errors explicitly, and remove duplicated logic on its third occurrence.\n- Add tests and documentation in the same change as the behavior; do not defer either to a cleanup Issue.\n- Do not implement downstream product behavior or cross-repository coordination in this library.\n\n## Interface and dependency agreements\n\n- `SEAM-020-rusty-bubbletea-v1` version `1.0.0`: consumer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-021-rusty-lipgloss-v1` version `1.0.0`: consumer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-022-rusty-bubbles-v1` version `1.0.0`: producer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-090-docs-projection-v1` version `1.0.0`: consumer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-103-rusty-bubbles-docs-v1` version `1.0.0`: producer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-093-rusty-bubbletea-candidate-v1` version `1.0.0`: consumer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-094-rusty-bubbles-candidate-v1` version `1.0.0`: producer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-095-rusty-lipgloss-candidate-v1` version `1.0.0`: consumer. The implementation and its direct consumer/misuse fixture must agree.\n\n## Documentation\n\n- For every changed Rust public item, write rustdoc describing purpose, inputs, outputs, errors, invariants, cancellation/ordering where relevant, and a compiling example; add or update module-level internal maintainer documentation.\n- For every changed module exposing a user-visible concept, add a complete `<user-docs>...</user-docs>` block and prove the repository documentation generator maps it to the declared user/developer website manifest.\n- Keep repository guidance product-neutral, point to the single owning documentation/testing policy, and do not introduce knowledge of downstream applications.\n\n## Focused verification\n\n- Add focused happy-path tests for every new or changed public operation and every owned acceptance behavior.\n- Add one focused test for every closed error code in the owned contract packs; assert the stable code and safe structured context, not display prose.\n- Test zero/empty, minimum, maximum and one-over-maximum inputs only for bounds declared by the owned contracts.\n- Keep all tests deterministic and one-shot. Replace clock, network, browser, terminal and platform dependencies with controlled drivers at unit level, while retaining each explicitly required real integration journey as separate evidence.\n- Compile the exact positive consumer and every owned compile-fail source with the pinned Rust toolchain; verify stable diagnostic identity/span/remediation and reject any private-field, absolute-path or secret leakage.\n- Generate the public API snapshot from the candidate crate, compare it byte-for-byte to the frozen sign\n\n[Machine summary truncated; the complete narrative appears above and in the linked artifacts.]",
"authority": "downstream",
"repository": "rusty-bubbles",
"repositories": [
"rusty-bubbles"
],
"acceptanceEvidence": [
{
"criterionId": "AC-BUI-012-A",
"profile": "code",
"targetPaths": [
"Cargo.toml",
"src/table.rs",
"tests/table_test.rs"
]
},
{
"criterionId": "AC-BUI-012-B",
"profile": "documentation",
"targetPaths": [
"docs/projection.yaml",
"docs/src/lib.rs",
"scripts/verify_docs_projection.sh",
"src/table.rs"
]
},
{
"criterionId": "AC-BUI-012-C",
"profile": "schema",
"targetPaths": [
"Cargo.toml",
"UPSTREAM_MAPPING.md",
"src/table.rs",
"tests/table_test.rs"
]
},
{
"criterionId": "AC-BUI-012-D",
"profile": "research",
"targetPaths": [
"evidence/acceptance/BUI-012/independent-review.md"
]
}
]
}
mutate-work-id:BUI-012
Outcome
Implement the generic accessible semantic widgets required by the frozen terminal contract.
Repository ownership
rusty-bubblesrusty-bubblessrc,tests,docs,examples,Cargo.tomlExact implementation targets
Cargo.tomldocs/src/lib.rsexamples/src/lib.rssrc/lib.rstests/src/lib.rsImplementation requirements
Interface and dependency agreements
SEAM-020-rusty-bubbletea-v1version1.0.0: consumer. The implementation and its direct consumer/misuse fixture must agree.SEAM-021-rusty-lipgloss-v1version1.0.0: consumer. The implementation and its direct consumer/misuse fixture must agree.SEAM-022-rusty-bubbles-v1version1.0.0: producer. The implementation and its direct consumer/misuse fixture must agree.SEAM-090-docs-projection-v1version1.0.0: consumer. The implementation and its direct consumer/misuse fixture must agree.SEAM-103-rusty-bubbles-docs-v1version1.0.0: producer. The implementation and its direct consumer/misuse fixture must agree.SEAM-093-rusty-bubbletea-candidate-v1version1.0.0: consumer. The implementation and its direct consumer/misuse fixture must agree.SEAM-094-rusty-bubbles-candidate-v1version1.0.0: producer. The implementation and its direct consumer/misuse fixture must agree.SEAM-095-rusty-lipgloss-candidate-v1version1.0.0: consumer. The implementation and its direct consumer/misuse fixture must agree.Documentation
<user-docs>...</user-docs>block and prove the repository documentation generator maps it to the declared user/developer website manifest.Focused verification
[Machine summary truncated; the complete narrative appears above and in the linked artifacts.]
Acceptance criteria
Acceptance evidence contract
Cargo.toml,tests/table_test.rsdocs/projection.yaml,docs/src/lib.rs,scripts/verify_docs_projection.sh,src/table.rsCargo.toml,tests/table_test.rsevidence/acceptance/BUI-012/independent-review.md🤖 Mutate Machine Contract
{ "schemaVersion": 2, "id": "BUI-012", "priority": "P2", "role": "mid", "requiredAccessTags": [ "access:public" ], "capabilities": [ "implementation", "documentation", "focused testing", "pull-request review" ], "dependencies": [ { "kind": "dependency", "issue": "BUI-011", "repository": "rusty-bubbletea" }, { "kind": "dependency", "issue": "BUI-013", "repository": "rusty-lipgloss" } ], "seamContracts": [ "SEAM-020-rusty-bubbletea-v1@1.0.0", "SEAM-021-rusty-lipgloss-v1@1.0.0", "SEAM-022-rusty-bubbles-v1@1.0.0", "SEAM-090-docs-projection-v1@1.0.0", "SEAM-103-rusty-bubbles-docs-v1@1.0.0", "SEAM-093-rusty-bubbletea-candidate-v1@1.0.0", "SEAM-094-rusty-bubbles-candidate-v1@1.0.0", "SEAM-095-rusty-lipgloss-candidate-v1@1.0.0" ], "acceptanceCriteria": [ "AC-BUI-012-A: The repository-owned result is complete and directly observable: Implement the generic accessible semantic widgets required by the frozen terminal contract.", "AC-BUI-012-B: Every changed public surface is strongly typed, documented at API and module level, and covered by deterministic happy-path, closed-error, and boundary tests.", "AC-BUI-012-C: The implemented side matches the agreed interfaces SEAM-020-rusty-bubbletea-v1@1.0.0 (consumer), SEAM-021-rusty-lipgloss-v1@1.0.0 (consumer), SEAM-022-rusty-bubbles-v1@1.0.0 (producer), SEAM-090-docs-projection-v1@1.0.0 (consumer), SEAM-103-rusty-bubbles-docs-v1@1.0.0 (producer), SEAM-093-rusty-bubbletea-candidate-v1@1.0.0 (consumer), SEAM-094-rusty-bubbles-candidate-v1@1.0.0 (producer), SEAM-095-rusty-lipgloss-candidate-v1@1.0.0 (consumer) and the positive and misuse fixtures verify the actual candidate output.", "AC-BUI-012-D: An independent reviewer confirms the implementation, documentation, tests, dependency direction, and affected-file scope without unresolved findings." ], "status": "dev-done", "title": "[BUI-012] Rusty Bubbles", "summary": "## Outcome\n\nImplement the generic accessible semantic widgets required by the frozen terminal contract.\n\n## Repository ownership\n\n- Owning repository: `rusty-bubbles`\n- Required repository access: `rusty-bubbles`\n- Write-owned paths: `src`, `tests`, `docs`, `examples`, `Cargo.toml`\n- This Issue owns one independently reviewable repository result. It does not merge another repository's change.\n\n## Exact implementation targets\n\n- `Cargo.toml`\n- `docs/src/lib.rs`\n- `examples/src/lib.rs`\n- `src/lib.rs`\n- `tests/src/lib.rs`\n\n## Implementation requirements\n\n- Implement the smallest complete change that proves the stated outcome; preserve the existing public API unless an agreed interface below explicitly changes it.\n- Keep parsing/admission, domain state transition, effect execution, and renderer materialization in separate modules or traits where applicable.\n- Reject invalid states at construction or compilation, propagate errors explicitly, and remove duplicated logic on its third occurrence.\n- Add tests and documentation in the same change as the behavior; do not defer either to a cleanup Issue.\n- Do not implement downstream product behavior or cross-repository coordination in this library.\n\n## Interface and dependency agreements\n\n- `SEAM-020-rusty-bubbletea-v1` version `1.0.0`: consumer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-021-rusty-lipgloss-v1` version `1.0.0`: consumer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-022-rusty-bubbles-v1` version `1.0.0`: producer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-090-docs-projection-v1` version `1.0.0`: consumer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-103-rusty-bubbles-docs-v1` version `1.0.0`: producer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-093-rusty-bubbletea-candidate-v1` version `1.0.0`: consumer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-094-rusty-bubbles-candidate-v1` version `1.0.0`: producer. The implementation and its direct consumer/misuse fixture must agree.\n- `SEAM-095-rusty-lipgloss-candidate-v1` version `1.0.0`: consumer. The implementation and its direct consumer/misuse fixture must agree.\n\n## Documentation\n\n- For every changed Rust public item, write rustdoc describing purpose, inputs, outputs, errors, invariants, cancellation/ordering where relevant, and a compiling example; add or update module-level internal maintainer documentation.\n- For every changed module exposing a user-visible concept, add a complete `<user-docs>...</user-docs>` block and prove the repository documentation generator maps it to the declared user/developer website manifest.\n- Keep repository guidance product-neutral, point to the single owning documentation/testing policy, and do not introduce knowledge of downstream applications.\n\n## Focused verification\n\n- Add focused happy-path tests for every new or changed public operation and every owned acceptance behavior.\n- Add one focused test for every closed error code in the owned contract packs; assert the stable code and safe structured context, not display prose.\n- Test zero/empty, minimum, maximum and one-over-maximum inputs only for bounds declared by the owned contracts.\n- Keep all tests deterministic and one-shot. Replace clock, network, browser, terminal and platform dependencies with controlled drivers at unit level, while retaining each explicitly required real integration journey as separate evidence.\n- Compile the exact positive consumer and every owned compile-fail source with the pinned Rust toolchain; verify stable diagnostic identity/span/remediation and reject any private-field, absolute-path or secret leakage.\n- Generate the public API snapshot from the candidate crate, compare it byte-for-byte to the frozen sign\n\n[Machine summary truncated; the complete narrative appears above and in the linked artifacts.]", "authority": "downstream", "repository": "rusty-bubbles", "repositories": [ "rusty-bubbles" ], "acceptanceEvidence": [ { "criterionId": "AC-BUI-012-A", "profile": "code", "targetPaths": [ "Cargo.toml", "src/table.rs", "tests/table_test.rs" ] }, { "criterionId": "AC-BUI-012-B", "profile": "documentation", "targetPaths": [ "docs/projection.yaml", "docs/src/lib.rs", "scripts/verify_docs_projection.sh", "src/table.rs" ] }, { "criterionId": "AC-BUI-012-C", "profile": "schema", "targetPaths": [ "Cargo.toml", "UPSTREAM_MAPPING.md", "src/table.rs", "tests/table_test.rs" ] }, { "criterionId": "AC-BUI-012-D", "profile": "research", "targetPaths": [ "evidence/acceptance/BUI-012/independent-review.md" ] } ] }