Skip to content

Publish and verify compiled TinyBus module - #3

Merged
senamakel merged 2 commits into
mainfrom
tinydocs-compiled-module
Aug 10, 2026
Merged

Publish and verify compiled TinyBus module#3
senamakel merged 2 commits into
mainfrom
tinydocs-compiled-module

Conversation

@senamakel

@senamakel senamakel commented Aug 10, 2026

Copy link
Copy Markdown
Member

Summary

  • advance the TinyBus submodule to the verified precompiled-module loader
  • publish release archives with a checksum.toml manifest
  • strengthen the compiled cdylib TinyBus end-to-end test and documentation

Validation

  • cargo fmt --all -- --check
  • cargo clippy --locked --all-targets --all-features -- -D warnings
  • cargo build --locked --all-targets --all-features
  • cargo test --locked --all-features
  • RUSTDOCFLAGS=-D warnings cargo doc --locked --no-deps --all-features
  • .github/scripts/check-file-coverage.sh 90 coverage.json
  • cargo package --locked --package tinydocs
  • compiled cdylib loaded and exercised through TinyBus

Public API: None.
Related issue: None.

Summary by CodeRabbit

  • New Features

    • Release bundles now include checksum.toml with SHA-256 hashes for archive verification.
    • Added guidance for loading and verifying target-specific release archives.
    • Published the package to crates.io.
  • Bug Fixes

    • Improved end-to-end validation of module identity and available functionality.
  • Documentation

    • Documented checksum requirements and pre-extraction verification for release archives.

Co-authored-by: Medulla <medulla@tinyhumans.ai>
@senamakel senamakel self-assigned this Aug 10, 2026
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@senamakel, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 51 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c03265f9-f5c4-423e-87c3-ad2f22d76528

📥 Commits

Reviewing files that changed from the base of the PR and between 9090c0a and 4cc701f.

📒 Files selected for processing (1)
  • .github/workflows/release.yml
📝 Walkthrough

Walkthrough

The release workflow now creates checksum.toml with SHA-256 hashes for archive assets. Documentation defines checksum and archive-loading requirements. The end-to-end test checks the loaded module manifest, and the vendored TinyBus reference is updated.

Changes

Release and module validation

Layer / File(s) Summary
Checksum contract and release publication
.github/workflows/release.yml, README.md, docs/plans/tinybus-module.md, docs/specs/tinybus-module.md
The release workflow generates checksum.toml before release creation. Documentation defines per-archive SHA-256 verification and target-specific archive loading.
TinyBus module validation
vendor/tinybus, crates/tinydocs-module/tests/module_e2e.rs
The vendored TinyBus reference is updated. The end-to-end test checks the module bus name, object path, and GenerateDocx method.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ReleaseWorkflow
  participant ChecksumScript
  participant GitHubRelease
  ReleaseWorkflow->>ChecksumScript: Generate checksum.toml for .tar.gz assets
  ChecksumScript-->>ReleaseWorkflow: Return SHA-256 manifest
  ReleaseWorkflow->>GitHubRelease: Create release with archives and checksum.toml
Loading

Possibly related PRs

  • tinyhumansai/tinydocs#2: This PR extends the earlier release workflow, module end-to-end tests, and TinyBus release documentation.

Poem

A rabbit checks each archive bright,
SHA-256 makes the bundles right.
TinyBus speaks its name and way,
GenerateDocx joins the play.
Tagged releases safely spring—
Hop, verify, and publish the thing!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main changes: publishing and verifying the compiled TinyBus module.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Co-authored-by: Medulla <medulla@tinyhumans.ai>
@senamakel
senamakel merged commit 041b7a3 into main Aug 10, 2026
10 of 11 checks passed

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/release.yml:
- Around line 289-290: Add a trailing line-continuation backslash to the
release-assets/* line in the gh release create command so the following --repo
"$REPOSITORY" argument remains part of the same shell command.
- Around line 281-287: Update the release command preceding this checksum block
so the `release-assets/*` continuation includes the trailing backslash, keeping
`--repo` part of the same command. In the checksum manifest loop, validate each
`sha256sum` result before writing its entry and propagate failures instead of
emitting empty hashes. Exclude the `.crate` asset from the `[sha256]` manifest
while retaining the existing tarball checksum handling.
- Around line 284-285: Update the asset checksum generation around the printf
command to compute the sha256sum result separately before publishing. Capture
the digest in a variable, ensure hashing or its pipeline failure causes the
workflow to exit, and only invoke printf after a successful digest computation.
- Around line 279-285: Fix the release command continuation so the arguments
following release-assets/*, including --repo, remain part of the same command.
Update the checksum pipeline to propagate sha256sum failures and stop instead of
emitting an empty digest. In ModuleHost::load_github_release, reject missing or
empty [sha256] entries before any extraction or loading occurs.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 07272d03-5f37-4d8b-8f19-34504759e87f

📥 Commits

Reviewing files that changed from the base of the PR and between 59aeb8b and 9090c0a.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • .github/workflows/release.yml
  • README.md
  • crates/tinydocs-module/tests/module_e2e.rs
  • docs/plans/tinybus-module.md
  • docs/specs/tinybus-module.md
  • vendor/tinybus

Comment thread .github/workflows/release.yml Outdated
Comment thread .github/workflows/release.yml Outdated
Comment thread .github/workflows/release.yml Outdated
Comment on lines +284 to +285
printf '"%s" = "%s"\n' \
"$(basename "$asset")" "$(sha256sum "$asset" | awk '{print $1}')"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' "$(false | awk '{print $1}')"
echo "The outer command still reached this line."

Repository: tinyhumansai/tinydocs

Length of output: 203


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- workflow files ---'
git ls-files '.github/workflows/release.yml' '.github/workflows'

printf '%s\n' '--- release workflow lines 250-310 ---'
sed -n '250,310p' .github/workflows/release.yml

printf '%s\n' '--- all relevant checksum/release references ---'
rg -n -C 3 'sha256sum|release-assets|gh release create|checksum|TinyBus|tar\.gz' .github README.md docs 2>/dev/null || true

Repository: tinyhumansai/tinydocs

Length of output: 15212


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- workflow lines 130-250 ---'
sed -n '130,250p' .github/workflows/release.yml

printf '%s\n' '--- checksum parser and artifact references ---'
rg -n -C 4 'checksum\.toml|modules\.toml|sha256|load_github_release|checksum_file|upload-artifact|path:' . \
  -g '!target' -g '!node_modules' 2>/dev/null || true

printf '%s\n' '--- shell syntax for the release command ---'
bash -n <<'SH'
set -euo pipefail
gh release create "$RELEASE_TAG" release-assets/*
  --repo "$REPOSITORY" \
  --verify-tag \
  --title "$RELEASE_TAG" \
  --generate-notes
SH
printf '%s\n' 'bash -n accepted the release command'

printf '%s\n' '--- command-substitution failure behavior ---'
bash -c 'set -euo pipefail; result="$(false | awk "{print \$1}")"; printf "result=<%s>\n" "$result"; echo reached' || true
bash -c 'set -euo pipefail; printf "result=<%s>\n" "$(false | awk "{print \$1}")"; echo reached' || true

Repository: tinyhumansai/tinydocs

Length of output: 7849


🏁 Script executed:

#!/usr/bin/env bash
set -u

printf '%s\n' '--- pipeline status with pipefail ---'
bash -c 'set -o pipefail; false | awk "{print \$1}"; printf "pipeline_status=%s\n" "$?"'

printf '%s\n' '--- assignment status with pipefail, without errexit ---'
bash -c 'set -o pipefail; result="$(false | awk "{print \$1}")"; printf "assignment_status=%s result=<%s>\n" "$?" "$result"'

printf '%s\n' '--- assignment with errexit, status captured by the parent ---'
bash -c 'set -euo pipefail; result="$(false | awk "{print \$1}")"; printf "reached_with_result=<%s>\n" "$result"'
printf 'nested_shell_status=%s\n' "$?"

printf '%s\n' '--- printf command-substitution status ---'
bash -c 'set -euo pipefail; printf "result=<%s>\n" "$(false | awk "{print \$1}")"; echo reached'
printf 'nested_shell_status=%s\n' "$?"

printf '%s\n' '--- release command line boundaries ---'
bash -c 'set -x; gh() { printf "gh_args:"; printf " <%s>" "$@"; printf "\n"; return 0; }; \
  set -euo pipefail; \
  gh release create "$RELEASE_TAG" release-assets/* \
    --repo "$REPOSITORY" \
    --verify-tag \
    --title "$RELEASE_TAG" \
    --generate-notes' 2>&1 || printf 'nested_shell_status=%s\n' "$?"

Repository: tinyhumansai/tinydocs

Length of output: 596


Propagate sha256sum failures before publishing.

The sha256sum pipeline runs inside a printf argument. A failed sha256sum can be followed by successful awk, so printf can write an empty digest without triggering set -euo pipefail.

Capture the digest separately and exit when hashing fails.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/release.yml around lines 284 - 285, Update the asset
checksum generation around the printf command to compute the sha256sum result
separately before publishing. Capture the digest in a variable, ensure hashing
or its pipeline failure causes the workflow to exit, and only invoke printf
after a successful digest computation.

Comment thread .github/workflows/release.yml Outdated
@senamakel
senamakel deleted the tinydocs-compiled-module branch August 10, 2026 20:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant