Unify Oracle submission-authority classification - #16
Merged
Conversation
Owner
Author
|
Merged and deployed verification:
Follow-up defect found while verifying the lock ledger, not fixed here: five Aug 8 runs in the DevSpace-Oracle project were legitimately settled with a user confirmation under Oracle 0.17.1, and their sidecar, mission and manifest hashes all still match, yet proven_user_confirmed_no_submission re-derives today's eligibility (which no longer includes 0.17.1 in the app-route proof version set) and therefore reports tampered-user-confirmation, keeping the project locked forever. The fix is to revalidate a recorded settlement against its own immutable hash bindings rather than against the current eligibility rules. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Incident
A real live qualified-Pro run (
20260814T122734Z-fe1e1b409f1f) exited at the ChatGPT login screen before the composer opened: no conversation URL, no output, process exited.settle-no-submissionrefused withNO_SUBMISSION_EVIDENCE_INCOMPLETE, so the project lock could never be released, whilediagnosereported the same run aslifecycle-running-via-exact-session-ownership. Settlement, project locks and diagnosis each carried their own string rules, so they disagreed about the same evidence.Change
_chatgpt_session_absent_no_submission_evidencebinds Oracle's exact paired refusal (ERROR:plusUser error (browser-automation):) with the same strength as the app-route rejection: canonical artifact paths, no symlinks, strict UTF-8, no conversation URL anywhere,Session: <locator>, byte-identical source/transport mission, mission and manifest SHA-256, a proof-version runtime, a completed local exit with no armed watchdog, and no submission marker (Answer:or the prompt-timeout marker). Eligibilityoracle-chatgpt-session-absent/v1settles only through an explicituser-confirmed-no-submission, producingsession_authority: pre_submit,transport_status: not_submitted_user_confirmed,task_outcome: not_executedand a released lock.classify_submission_authority(run_dir)returnsPRE_SUBMIT_PROVEN | SUBMITTED_BOUND | SUBMITTED_UNKNOWN | TERMINAL | INVALID_EVIDENCEplusowns_project,settlement_eligibilityandrequires_user_confirmation.unresolved_project_sessionsdecides ownership only from that verdict, andchatgpt_oracle_run.py,chatgpt_oracle_diagnose.pyandchatgpt_oracle_incident.pyall report the same classification. Every consumer gates onrequires_user_confirmation, so no eligible family can be dropped by a label check.Safety rules kept
No auto-resubmission after a real submission; a conversation URL still allows exact-slug recovery only; no lock release on unclear state; no settlement without user confirmation; no automatic login or cookie injection; no backend, ZIP or new-conversation fallback; no DevSpace-to-root-chat fallback; no model or reasoning downgrade; exact-session ownership stays monotonic. Absence of evidence never releases a lock — only a proven settlement does.
Ownership contracts preserved and hardened
terminal_observedstill owns its project until an exact harvest.status: completeno longer releases ownership, matchingresolve_lifecycle's refusal to treat the weakest authority as completion.pre_submitclaim now requires an agreeingtransport_statusand no observed answer in the run's own logs, so a single edited field cannot release a live submitted run.Diagnosis and reporting
safe_for_fresh_run_bucketsand the per-bucket remediation are computed from the verdicts, so a bucket holding a lock-owning run is never advertised as fresh-run-safe.--summary-onlystays the aggregate no-subcommand form; combining it withtriage/watchis refused with a message that spells out the exact usage, and the skills now describe both forms without conflating them.Verification
compileallclean; golden-path dry run all checks pass; portability and skill-metadata checks pass.status: completerelease and the eligibility-label divergence) are fixed, three are hardened as described, and one is tracked below.Tracked, not fixed here
parallel_parent_idgrants project-lock coexistence without proving parenthood againstweb_multi_child_provenance. Pre-existing, needs its own provenance-binding change.run_rootand the Oracle state-root environment share the host trust boundary: whoever authors them can author any host state. A union scan over ambient ledgers was tried and reverted because it made one project's lock depend on unrelated host state.