Skip to content

feat(api): create hypothetical interpretation runs via loopback CLI - #425

Closed
seonghobae wants to merge 1 commit into
mainfrom
feat/interpretation-run-cli-gap-003a
Closed

feat(api): create hypothetical interpretation runs via loopback CLI#425
seonghobae wants to merge 1 commit into
mainfrom
feat/interpretation-run-cli-gap-003a

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Folded into #436

Closed as superseded_by_fold, not discarded. #436's current head contains this PR as an ancestor and is now based on protected main, preserving the interpretation-run create CLI, collection GET/CLI implementation/tests, and this review history while reducing queue WIP. Retrieval vehicles #439/#454 also retain this ancestry.

Canonical interpretation-run adapter vehicle: #436 (feat(api): consolidate interpretation-run create and collection adapters).

Do not reopen unless a surviving folded head demonstrably loses unique behavior or evidence.

GAP-003A unique slice: tepp-interpretation-runs create mints typed
contextual-orchestrator POST /v1/interpretation-runs onto spawned
tepp-orchestrator-loopback TCP. Metric-free hypothetical JSON only.
Naruon and LineageWeave are refused. Persistence remains GAP-003B.
ADR 0064 unique vs main.
@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 43 minutes.

View limit details

Limit details: You’ve used the included review currently available.

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

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 38a2304e-4c1f-428e-bd8c-86b4da081946

📥 Commits

Reviewing files that changed from the base of the PR and between 1bc02f5 and c115583.

📒 Files selected for processing (14)
  • CHANGELOG.d/interpretation-run-cli.md
  • DOCUMENTATION.md
  • crates/orchestrator_live/Cargo.toml
  • crates/orchestrator_live/src/bin/tepp_interpretation_runs.rs
  • crates/orchestrator_live/src/bin/tepp_orchestrator_loopback.rs
  • crates/orchestrator_live/src/interpretation_run_cli.rs
  • crates/orchestrator_live/src/lib.rs
  • crates/orchestrator_live/tests/interpretation_run_cli_contract.rs
  • crates/orchestrator_live/tests/orchestrator_loopback_binary_contract.rs
  • docs/API_CONTRACT.md
  • docs/TRACEABILITY.md
  • docs/adr/0064-interpretation-run-cli.md
  • docs/adr/README.md
  • docs/research/interpretation-run-cli.md

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.

@devin-ai-integration devin-ai-integration 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.

Devin Review found 4 potential issues.

Devin Review

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔍 Coverage evidence is missing

The repository requires 100% production line and branch coverage. The submitted verification omits that gate despite substantial new production branching.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

.unwrap_or(usize::MAX);
let mut service = OrchestratorLiveService::bind(bind_addr)?;
println!("{}", service.local_addr()?);
(0..request_limit).for_each(|_| drop(service.serve_one()));

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Listener failures report success

drop discards every serve_one failure. A bounded listener can consume its quota and exit successfully without serving the configured requests.

Suggested change
(0..request_limit).for_each(|_| drop(service.serve_one()));
for _ in 0..request_limit {
service.serve_one()?;
}
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +203 to +217
fn compose_https_target(origin: &str, path: &str) -> Result<String, OrchestratorLiveError> {
require_nonempty(origin)?;
if !origin.starts_with("https://") || origin.ends_with('/') {
return Err(OrchestratorLiveError::InvalidWirePayload);
}
let rest = origin
.strip_prefix("https://")
.ok_or(OrchestratorLiveError::InvalidWirePayload)?;
if rest.contains('@') || rest.contains('?') || rest.contains('#') || rest.contains('\\') {
return Err(OrchestratorLiveError::InvalidWirePayload);
}
if host_implies_table_access(rest) {
return Err(OrchestratorLiveError::InvalidWirePayload);
}
Ok(format!("{origin}{path}"))

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔍 Origin contract accepts path segments

compose_https_target accepts empty authorities and embedded path segments. Public callers can receive target URLs that violate the established host-only origin convention.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

.unwrap_or(usize::MAX);
let mut service = OrchestratorLiveService::bind(bind_addr)?;
println!("{}", service.local_addr()?);
(0..request_limit).for_each(|_| drop(service.serve_one()));

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟨 Idle clients can halt the listener

A same-host process can hold one connection open without sending a request. The single-threaded listener blocks indefinitely and serves no later clients.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@seonghobae seonghobae closed this Sep 1, 2026
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