Skip to content

feat(api): enumerate analysis runs via loopback collection GET - #368

Draft
seonghobae wants to merge 2 commits into
feat/analysis-run-cancel-http-gap-003afrom
feat/analysis-run-collection-get-gap-003a
Draft

feat(api): enumerate analysis runs via loopback collection GET#368
seonghobae wants to merge 2 commits into
feat/analysis-run-cancel-http-gap-003afrom
feat/analysis-run-collection-get-gap-003a

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Why

GAP-003A / issue #166 still has no operator-visible collection read. Operators cannot enumerate accepted, running, cancelled, or terminal runs without guessing run ids. docs/API_CONTRACT.md now documents GET /v1/analysis-runs.

Live slices that this PR does not duplicate:

What

Seventh GAP-003A slice stacked on #361 over protected main 1bc02f580cf48e1d39da239f0e818453437c31c3:

  • GET /v1/analysis-runs on AnalysisRunLiveService
  • metric-free collection rows: run_id, run_state, idempotency_key
  • accepted, running, cancelled, succeeded, and failed rows list; succeeded rows still omit the artifact
  • tepp.scientific_acceptance.v1 never appears on the list
  • bounded cursor pagination via tepp-page-cursor / tepp-page-limit (query strings stay fail-closed)
  • consumer isolation; unknown cursor, GET-by-id, nonempty GET bodies fail closed
  • ADR 0031 (0026–0030 live on other GAP-003A PRs)

Not an ADR 0014 scientific claim. Not persistence. Not GET-by-id. Not lifecycle POST. Not cancel HTTP. Not loopback CLI.

Verification

  • cargo clippy -p tepp_api --all-targets -- -D warnings
  • cargo test -p tepp_api --all-targets
  • RUSTDOCFLAGS='-D warnings' cargo doc -p tepp_api --no-deps
  • python3 scripts/validate_documentation.py
  • python3 scripts/check_docstrings.py
  • crates/tepp_api/tests/analysis_run_collection_http_contract.rs
  • doctoring: docs/research/analysis-run-collection-http.md

Exact-head Checks on this SHA are required before merge. Two independent current-head APPROVEs are required. Author cannot self-approve. Merge #361 before this stacked PR, or retarget onto protected main after #361 lands. No force-push.

GAP-003A seventh slice for issue #166. GET /v1/analysis-runs lists
accepted, running, cancelled, and terminal runs as metric-free rows so
operators do not guess run identities. Collection bodies refuse RMSE,
bias, coverage, SE-gate, and tepp.scientific_acceptance.v1.

ADR 0031 owns this collection read. Does not duplicate GET-by-id,
lifecycle POST, cancel HTTP, loopback CLI, or the analysis_engine library.
@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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.

Copy link
Copy Markdown
Contributor Author

Hour-20 exact-head review request.

Current head 6a5d9777e2cf76c48726ae0243da872993d8881d. Devin/CodeRabbit/author COMMENTED is not independent APPROVE. OpenCode DISMISSED/REQUEST_CHANGES on predecessor heads does not transfer. Ruleset 18156473 needs two independent APPROVE reviews on this exact SHA.

GAP-003A collection GET draft stacked on #361. ADR 0031. Collection bodies stay metric-free. Do not duplicate GET /v1/analysis-runs.

Do not self-approve. Do not --admin merge. Checks/reviews are not a reason to weaken fail-closed gates.

Copy link
Copy Markdown
Contributor Author

Hour-21 exact-head review request.

Current head 6a5d9777e2cf76c48726ae0243da872993d8881d.
Devin/CodeRabbit/author COMMENTED is not independent APPROVE. Copilot review requests are not APPROVE. Ruleset 18156473 needs two independent approvals. Do not self-approve. Do not merge without two independent APPROVE reviews on this exact head.

@opencode-agent review

…p-003a' into feat/analysis-run-collection-get-gap-003a
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