Skip to content

feat(serve): add synchronous local-path scan API baseline#836

Merged
mstykow merged 28 commits intomainfrom
feat/serve-shell
May 3, 2026
Merged

feat(serve): add synchronous local-path scan API baseline#836
mstykow merged 28 commits intomainfrom
feat/serve-shell

Conversation

@mstykow
Copy link
Copy Markdown
Owner

@mstykow mstykow commented May 2, 2026

Summary

  • add a real provenant serve subcommand with a lightweight long-lived HTTP shell, health/readiness/version endpoints, and a working synchronous POST /v1/scans route
  • add an evergreen docs/SERVE_API_GUIDE.md that documents the current HTTP surface directly, including curl examples, operator-mode path usage, and current limits
  • add an implementation-coupled generated OpenAPI document at docs/openapi/provenant-serve.openapi.json plus an xtask generator and CI check to keep it in sync with the code

Issues

Scope and exclusions

  • Included:
    • provenant serve --bind <HOST:PORT> CLI surface
    • long-lived service shell lifecycle and bind failure handling
    • GET /livez, GET /readyz, GET /version
    • synchronous POST /v1/scans
    • local-path sync request handling on top of the shared workflow/app pipeline
    • evergreen Serve API Guide for the current implemented baseline
    • generated OpenAPI artifact and xtask/CI verification
    • top-level integration tests, manual local e2e validation, and CI smoke coverage for the new command
  • Explicit exclusions:
    • async scan endpoints and job persistence
    • repository inputs, upload inputs, and remote URL inputs
    • auth and broader hosted-service/platform concerns
    • closing Create provenant serve API #834 end-to-end

Intentional differences from Python

  • introduce a Provenant-specific long-lived service command and synchronous HTTP scan API; this is not a ScanCode CLI parity surface

Follow-up work

  • Created or intentionally deferred:
    • async routes such as POST /v1/scans:async and /v1/jobs/... remain defined in the end-state plan but are not implemented in this PR
    • the end-state contract in docs/implementation-plans/infrastructure/SERVE_PLAN.md now prioritizes repository inputs, upload inputs, remote URL inputs, and automation-friendly async jobs beyond this path-based baseline
    • Create provenant serve API #834 stays open until the broader serve contract is implemented beyond the synchronous local-path slice

Expected-output fixture changes

  • Files changed: none
  • Why the new expected output is correct: this PR adds a new service transport plus user-facing HTTP documentation/spec artifacts, but does not change existing golden fixture outputs

@mstykow mstykow changed the title feat(serve): add service shell and contract feat(serve): add synchronous scan endpoint May 2, 2026
@mstykow mstykow force-pushed the feat/serve-shell branch from 554f18c to 85ef083 Compare May 3, 2026 07:50
@mstykow mstykow linked an issue May 3, 2026 that may be closed by this pull request
@mstykow mstykow changed the title feat(serve): add synchronous scan endpoint feat(serve): add synchronous scan API guide and spec May 3, 2026
@mstykow mstykow force-pushed the feat/serve-shell branch from 85ef083 to 422fb73 Compare May 3, 2026 08:51
@mstykow mstykow removed a link to an issue May 3, 2026
@mstykow mstykow changed the title feat(serve): add synchronous scan API guide and spec feat(serve): add synchronous local-path scan API baseline May 3, 2026
Base automatically changed from refactor/internal-scan-pipeline to main May 3, 2026 11:57
mstykow and others added 16 commits May 3, 2026 14:02
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
@mstykow mstykow force-pushed the feat/serve-shell branch from 5ae838d to 4989776 Compare May 3, 2026 12:02
mstykow and others added 5 commits May 3, 2026 21:27
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
mstykow and others added 7 commits May 3, 2026 21:27
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
@mstykow mstykow merged commit e8fbd5e into main May 3, 2026
15 checks passed
@mstykow mstykow deleted the feat/serve-shell branch May 3, 2026 19:27
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