Skip to content

[BUI-012] Rusty Bubbles #1

Description

@coderbants

mutate-work-id:BUI-012

Outcome

Implement the generic accessible semantic widgets required by the frozen terminal contract.

Repository ownership

  • Owning repository: rusty-bubbles
  • Required repository access: rusty-bubbles
  • Write-owned paths: src, tests, docs, examples, Cargo.toml
  • This Issue owns one independently reviewable repository result. It does not merge another repository's change.

Exact implementation targets

  • Cargo.toml
  • docs/src/lib.rs
  • examples/src/lib.rs
  • src/lib.rs
  • tests/src/lib.rs

Implementation requirements

  • Implement the smallest complete change that proves the stated outcome; preserve the existing public API unless an agreed interface below explicitly changes it.
  • Keep parsing/admission, domain state transition, effect execution, and renderer materialization in separate modules or traits where applicable.
  • Reject invalid states at construction or compilation, propagate errors explicitly, and remove duplicated logic on its third occurrence.
  • Add tests and documentation in the same change as the behavior; do not defer either to a cleanup Issue.
  • Do not implement downstream product behavior or cross-repository coordination in this library.

Interface and dependency agreements

  • SEAM-020-rusty-bubbletea-v1 version 1.0.0: consumer. The implementation and its direct consumer/misuse fixture must agree.
  • SEAM-021-rusty-lipgloss-v1 version 1.0.0: consumer. The implementation and its direct consumer/misuse fixture must agree.
  • SEAM-022-rusty-bubbles-v1 version 1.0.0: producer. The implementation and its direct consumer/misuse fixture must agree.
  • SEAM-090-docs-projection-v1 version 1.0.0: consumer. The implementation and its direct consumer/misuse fixture must agree.
  • SEAM-103-rusty-bubbles-docs-v1 version 1.0.0: producer. The implementation and its direct consumer/misuse fixture must agree.
  • SEAM-093-rusty-bubbletea-candidate-v1 version 1.0.0: consumer. The implementation and its direct consumer/misuse fixture must agree.
  • SEAM-094-rusty-bubbles-candidate-v1 version 1.0.0: producer. The implementation and its direct consumer/misuse fixture must agree.
  • SEAM-095-rusty-lipgloss-candidate-v1 version 1.0.0: consumer. The implementation and its direct consumer/misuse fixture must agree.

Documentation

  • 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.
  • 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.
  • Keep repository guidance product-neutral, point to the single owning documentation/testing policy, and do not introduce knowledge of downstream applications.

Focused verification

  • Add focused happy-path tests for every new or changed public operation and every owned acceptance behavior.
  • 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.
  • Test zero/empty, minimum, maximum and one-over-maximum inputs only for bounds declared by the owned contracts.
  • 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.
  • 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.
  • Generate the public API snapshot from the candidate crate, compare it byte-for-byte to the frozen sign

[Machine summary truncated; the complete narrative appears above and in the linked artifacts.]

Acceptance criteria

  • 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.

Acceptance evidence contract

Criterion Profile Exact target paths
AC-BUI-012-A code Cargo.toml, tests/table_test.rs
AC-BUI-012-B documentation docs/projection.yaml, docs/src/lib.rs, scripts/verify_docs_projection.sh, src/table.rs
AC-BUI-012-C schema Cargo.toml, tests/table_test.rs
AC-BUI-012-D research evidence/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"
      ]
    }
  ]
}

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions