Skip to content

fix(honua-gp): type results gone after success as missing_output; pin 548b7a5 - #241

Merged
mikemcdougall merged 1 commit into
trunkfrom
fix/226-repin-548b7a5-replay
Sep 15, 2026
Merged

mikemcdougall merged 1 commit into
trunkfrom
fix/226-repin-548b7a5-replay

Conversation

@mikemcdougall

Copy link
Copy Markdown
Contributor

Summary

This is the #226 replay on the re-pinned 2026.1 candidate: honua-release #349, honua-server 548b7a5263da5a3f2381eb43f232687cdf92b0bf, AOT image sha256:29974ee7b722e3ae15c3b891024e5e70800f412188aeccf5ec3d32d9dac675c1. It covers the criteria #227/#240 had released.

  • Typed missing results. Before this change, a job that succeeded but whose results fetch answered 404/410 raised ExecuteError(error_kind="HonuaHttpError"), the transport class name. submit_and_wait now raises error_kind="missing_output" with the HTTP error as its cause. Other results errors (403, 500, connection) propagate unchanged.
  • Live results-gone proof. test_results_gone_after_success_are_a_typed_missing_output runs two real Buffer jobs to successful. It deletes each job's record from the server's Redis, then lets honua_gp read the results. Both calls raise missing_output with a 404 cause. The prior gp226_lost stays bound to its own result (count and coverage re-checked against the raw FeatureServer points), and gp226_lost_new stays unresolvable rather than reading layer 0. The earlier unknown-job-id check now also asserts missing_output.
  • Eval pin. ephemeral-server-smoke moves from 7ba4226 to the new candidate, with image and seed revision updated together.

Why results-gone is shown by removing the job record

On 548b7a5, results cannot expire inside a test. I verified this live with Geoprocessing__Executors__ResultRetention=00:01:00:

  • Results stayed 200 for 205 s.
  • TTL controlplane:job:{id} = 604579. RedisExecutionJobStore hard-codes 7 days for terminal job records.
  • TTL controlplane:job:gp-result:{id} = 22. Every results read re-synthesizes the package from the record.

Deleting the record produces exactly the state expiry or store loss leaves: the server answers 404 no-such-job for a job that reported successful. The server-side retention gap is filed as honua-io/honua-server#4888. Dismissing a terminal job is still 409.

Evidence

All runs were against a fresh docker/client-compat stack from 548b7a5 on the pinned digest (image revision label 548b7a5…), with default retention and seeded test_service/0 (10 rows) plus the SpatialJoin layer.

  • Installed consumer. Non-editable wheels were built from this branch and installed in a fresh venv:

    • honua_gp-0.1.0 sha256 aa4a4377…
    • honua_sdk-0.1.11 sha256 f7214478…
    • honua_admin-0.1.8 sha256 685e6cf4…

    From a directory outside the source tree (module file under site-packages), test_output_binding_live.py passed 7/7: Buffer→GetCount/SearchCursor→Dissolve, the Buffer→Dissolve chain, Project/Mercator, empty output, failed and cancelled overwrites, no layer-0 fallback, and results gone after success.

  • Trunk wheels on the same pin. The 6 existing live tests pass 6/6. A store-loss probe on trunk code raised error_kind="HonuaHttpError", which is the negative control for the new assertion.

  • Live eval. 52/52, supported 27/27 (--require-supported-pass-rate 1.0).

  • Unit tests. packages/honua-gp/tests 317 passed, 11 skipped; the skips are live-only. ruff check . is clean.

Acceptance criteria (#226)

  1. Reserve, then bind to the real artifact. Delivered in fix(honua-gp): bind GP outputs to real job results, reject unapplied semantics #227.
  2. No imaginary dataset or layer-0 fallback; typed missing/unreadable/unsupported failures. Delivered in fix(honua-gp): bind GP outputs to real job results, reject unapplied semantics #227. This PR also types missing results after success.
  3. Overwrite policy; failed/cancelled calls keep prior aliases. Delivered in fix(honua-gp): bind GP outputs to real job results, reject unapplied semantics #227 and proven live again here, including a lost-results overwrite.
  4. Real-server proof. Covered live on the candidate:
  5. Validate or reject unsupported options. Delivered in fix(honua-gp): bind GP outputs to real job results, reject unapplied semantics #227.
  6. Output oracles, installed-consumer evidence, manifest reclassification. Oracles in Live smoke grades no response oracle for 9 of 25 supported eval scripts (unblessed passes silently) #202/fix(gp): bless live response oracles for 9 unblessed scripts + gate future regrowth #229; installed-consumer replay on the frozen candidate in this PR; Buffer and Project reclassified to partial in fix(honua-gp): bind GP outputs to real job results, reject unapplied semantics #227. bug(honua-gp): environment configuration and FeatureServer URL resolution break GetCount parity #205 is closed. feat(honua-gp): implement stubs backed by existing server processes and regenerate the compatibility matrix #196 (broad tool expansion) stays a separate non-goal.

Closes #226

… 548b7a5

A job that succeeded but whose /jobs/{id}/results fetch answered 404/410
raised ExecuteError with error_kind "HonuaHttpError" (the transport class
name). submit_and_wait now raises error_kind "missing_output" with the HTTP
error as cause; other results errors still propagate.

On honua-server 548b7a5 the terminal job record lives a fixed 7 days in
Redis and expired result packages are re-synthesized from it
(honua-server#4888), so the live proof deletes a real successful job's
record (HONUA_GP_LIVE_REDIS) instead of waiting for expiry. A prior output
stays bound to its own result; a new name stays unbound.

The pinned ephemeral-server-smoke identity moves to the re-pinned 2026.1
candidate (honua-release #349): 548b7a5, sha256:29974ee7.

Closes #226
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 15, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
🔒 Security Review Completed 2026-09-15T00:52:45.154189Z 64adb88 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@mikemcdougall
mikemcdougall merged commit df70d6c into trunk Sep 15, 2026
28 of 29 checks passed
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.

fix(honua-gp): bind Result outputs to real artifacts and reject unsupported parameter semantics

1 participant