gapCreate the Python job in Studio
No current Studio action exists; start from a reviewed repository outside Studio.
Expected: Planned: a searchable Python project with no embedded credentials.
contract-onlyDeclare runtime and dependencies
Set runtime=python, module:function entrypoint, and a relative locked dependency manifest at a full commit SHA.
Expected: A policy-reviewable immutable source descriptor.
contract-onlyPin inputs and outputs
Use staged inputs and the server-assigned S3 output prefix through GpContext.
Expected: No caller-chosen output path; STAC/COG/GeoParquet bindings remain unclaimed until implemented.
contract-onlyConfigure identity and secrets
Declare the minimum scope; let the server mint HONUA_JOB_TOKEN and HONUA_BASE_URL.
Expected: A job-bound identity with no arbitrary secret material in params.
gapSet resource and retry bounds
Use the server timeout policy; do not claim per-job CPU, memory, retry, or idempotency fields.
Expected: Planned: explicit bounded submission fields and policy receipt.
contract-onlyBuild and package
Pin an allowlisted repository commit and run only in the sanctioned worker-customcode-python image selected by the workload registry.
Expected: A reproducible source/image identity; no caller-provided image.
gapRegister and publish the process
No admitted Studio or public SDK registration action exists.
Expected: Planned: versioned process definition and publish receipt.
contract-onlySubmit the job
Use the custom-code metadata contract through a registered GPServer task only after policy approval.
Expected: A server-assigned job id and Batch execution identity.
gapObserve logs and progress
Poll the existing job status where available; do not claim a Studio log stream.
Expected: Planned: bounded redacted logs and monotonic progress receipt.
contract-onlyCancel
Require explicit operator approval and use the registered task's cancellation surface.
Expected: A terminal cancellation state tied to the approval and job id.
contract-onlyCollect artifacts and provenance
Declare artifacts through context.output.add_artifact under the server output prefix.
Expected: Artifact keys and digests tied to source commit, image, and job id.
gapCleanup and TTL
No public artifact TTL/cleanup contract is admitted.
Expected: Planned: explicit retention policy plus deletion receipt.
gapCapture a CI fixture receipt
Add a pinned Batch fixture only after the complete lifecycle is deployable.
Expected: A deterministic non-secret receipt that gates gallery admission.