Skip to content

pikaci: fulfillment helper + staged subprocess + pika-news fixes#524

Merged
justinmoon merged 1 commit intomasterfrom
hyfomtgx
Mar 8, 2026
Merged

pikaci: fulfillment helper + staged subprocess + pika-news fixes#524
justinmoon merged 1 commit intomasterfrom
hyfomtgx

Conversation

@justinmoon
Copy link
Copy Markdown
Collaborator

@justinmoon justinmoon commented Mar 8, 2026

Summary

  • Add dedicated fulfillment helper for prepared output requests
  • Add staged Rust subprocess run mode and preserve it on rerun
  • Subprocess fulfillment mode with explicit embedded binary
  • Remote prepared output prototype with validation
  • pika-news: fix layout overflow, always render chat, global auth routes
  • Shared helper extractions and stabilization fixes

Test plan

  • CI green

🤖 Generated with Claude Code


Open with Devin

Summary by CodeRabbit

Release Notes

  • New Features

    • Introduced a dedicated prepared output fulfillment helper utility for streamlined request processing.
  • Documentation

    • Updated architecture planning to detail prepared output fulfillment boundaries and helper contract specifications across deployment phases.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 8, 2026

📝 Walkthrough

Walkthrough

This PR introduces a dedicated pikaci-fulfill-prepared-output helper binary and updates the prepared output fulfillment workflow. The run.rs module adds name resolution logic to locate and invoke this helper binary, while tests are updated to reflect the new invocation pattern.

Changes

Cohort / File(s) Summary
New Helper Binary
crates/pikaci/src/bin/pikaci-fulfill-prepared-output.rs
Introduces a new Rust binary that parses a request path argument, loads a fulfill_prepared_output_request, and prints the path, output name, and requested exposures count.
Helper Resolution & Invocation
crates/pikaci/src/run.rs
Adds PREPARED_OUTPUT_FULFILLMENT_HELPER_BASENAME constant and prepared_output_fulfillment_helper_file_name() helper function. Updates resolve_prepared_output_fulfillment_program() to accept and resolve the helper binary name, and revises fulfill_prepared_output_request_via_subprocess() logging to reference helper terminology. Expands test coverage for helper resolution scenarios.
Test Updates
crates/pikaci/tests/fulfill_prepared_output_request_cli.rs
Renames test function and updates invocation to target the new pikaci-fulfill-prepared-output helper binary instead of pikaci subcommand. Updates error message expectations.
Documentation
todos/pikaci-staged-ci-plan.md
Expands Phase 6 planning with subsections describing helper contract, consumer slice, and fulfillment boundaries. Adds prepared-output handoff model and emphasizes dedicated fulfillment helper architecture.

Sequence Diagram

sequenceDiagram
    actor Caller
    participant pikaci as pikaci Binary
    participant resolver as resolve_prepared_output<br/>_fulfillment_program()
    participant helper as pikaci-fulfill-prepared<br/>-output Helper
    participant request as fulfill_prepared<br/>_output_request
    
    Caller->>pikaci: Invoke prepared output fulfillment
    pikaci->>resolver: Locate helper binary (current_exe path)
    resolver->>resolver: Check if current exe is pikaci or helper basename
    resolver->>resolver: Derive helper file name with proper extension
    pikaci->>helper: Spawn subprocess with request path
    helper->>request: Load fulfill_prepared_output_request from path
    request-->>helper: Return request object (path, output, count)
    helper->>helper: Print structured output lines
    helper-->>Caller: Return exit status
Loading

Estimated Code Review Effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly Related PRs

Poem

🐰 A helper binary hops into place,
Resolving names with elegant grace,
Prepared outputs now have their own way,
No more subcommands in pikaci's display! 🎯

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 46.15% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title references three main components: fulfillment helper, staged subprocess, and pika-news fixes. The PR summary confirms all three are present in the changeset with the fulfillment helper and staged subprocess being prominent additions to the pikaci crate.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch hyfomtgx

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

Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
todos/pikaci-staged-ci-plan.md (1)

454-455: Minor style nit: repeated sentence beginnings.

Static analysis flagged that successive sentences begin with "Phase". This is stylistically acceptable in a bullet-list document, but if you want to address it, consider varying the phrasing (e.g., "The sixth phase is complete...").

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@todos/pikaci-staged-ci-plan.md` around lines 454 - 455, Rewrite the two
successive sentences to avoid repeated sentence beginnings by changing the first
sentence "Phase 6 is complete in its first, second, third, fourth, fifth, sixth,
and seventh narrow remote-prep forms." to a variant like "The sixth phase is
complete across its first through seventh narrow remote-prep forms." and leave
or slightly reword the second sentence "Current recommended slice..." (or
prefacing it with "Recommendation:") so the pair no longer both start with
"Phase"; update occurrences of the exact phrase "Phase 6 is complete..." and
"Current recommended slice..." in the document accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@todos/pikaci-staged-ci-plan.md`:
- Around line 454-455: Rewrite the two successive sentences to avoid repeated
sentence beginnings by changing the first sentence "Phase 6 is complete in its
first, second, third, fourth, fifth, sixth, and seventh narrow remote-prep
forms." to a variant like "The sixth phase is complete across its first through
seventh narrow remote-prep forms." and leave or slightly reword the second
sentence "Current recommended slice..." (or prefacing it with "Recommendation:")
so the pair no longer both start with "Phase"; update occurrences of the exact
phrase "Phase 6 is complete..." and "Current recommended slice..." in the
document accordingly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 35593b62-936f-4452-925c-44b9ace246f7

📥 Commits

Reviewing files that changed from the base of the PR and between f78cb18 and f7c3fa7.

📒 Files selected for processing (4)
  • crates/pikaci/src/bin/pikaci-fulfill-prepared-output.rs
  • crates/pikaci/src/run.rs
  • crates/pikaci/tests/fulfill_prepared_output_request_cli.rs
  • todos/pikaci-staged-ci-plan.md

@justinmoon justinmoon merged commit dc9438d into master Mar 8, 2026
18 checks passed
@justinmoon justinmoon deleted the hyfomtgx branch March 20, 2026 14:52
@justinmoon justinmoon restored the hyfomtgx branch March 20, 2026 21:19
@justinmoon justinmoon deleted the hyfomtgx branch March 20, 2026 21:21
@justinmoon justinmoon restored the hyfomtgx branch March 20, 2026 21:48
@justinmoon justinmoon deleted the hyfomtgx branch March 20, 2026 21:53
@justinmoon justinmoon restored the hyfomtgx branch March 20, 2026 21:57
@justinmoon justinmoon deleted the hyfomtgx branch March 20, 2026 21:59
@justinmoon justinmoon restored the hyfomtgx branch March 20, 2026 22:03
@justinmoon justinmoon deleted the hyfomtgx branch March 20, 2026 22:04
@justinmoon justinmoon restored the hyfomtgx branch March 20, 2026 22:09
@justinmoon justinmoon deleted the hyfomtgx branch March 20, 2026 22:09
@justinmoon justinmoon restored the hyfomtgx branch March 20, 2026 22:15
@justinmoon justinmoon deleted the hyfomtgx branch March 20, 2026 22:20
@justinmoon justinmoon restored the hyfomtgx branch March 20, 2026 22:20
@justinmoon justinmoon deleted the hyfomtgx branch March 20, 2026 22:26
@justinmoon justinmoon restored the hyfomtgx branch March 20, 2026 22:26
@justinmoon justinmoon deleted the hyfomtgx branch March 20, 2026 22:31
@justinmoon justinmoon restored the hyfomtgx branch March 20, 2026 22:32
@justinmoon justinmoon deleted the hyfomtgx branch March 20, 2026 22:36
@justinmoon justinmoon restored the hyfomtgx branch March 20, 2026 22:37
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 18:36
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 18:41
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 18:46
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 18:47
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 18:51
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 18:53
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 18:57
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 18:58
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 19:02
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 19:04
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 19:07
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 19:10
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 19:13
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 19:15
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 19:18
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 19:21
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 19:23
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 19:27
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 19:29
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 19:33
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 19:34
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 19:38
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 19:39
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 19:44
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 19:45
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 19:50
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 19:55
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 19:59
@justinmoon justinmoon deleted the hyfomtgx branch March 21, 2026 20:00
@justinmoon justinmoon restored the hyfomtgx branch March 21, 2026 20:43
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