Repository navigation
Verified one-command GitHub handoff with strict Codex completion and candidate binding - #78
Conversation
|
@codex Bitte ausschließlich lesenden, ungefährlichen Verbindungstest durchführen (Loop42 Issue #77, PR #78). Ziel: prüfen, ob ein von ChatGPT über GitHub eingereichter PR-Kommentar tatsächlich einen Codex-Cloud-Auftrag auslöst – OHNE manuelles Copy/Paste. Lies den aktuellen PR-Head, bestätige die Revision und beantworte hier im PR-Kommentar, ob die Cloud-Aufgabe gestartet wurde, welche unterstützte Ausführungsumgebung verfügbar ist und ob der lokale Loop42-Handoff auf dem Windows-Rechner von dort aus überhaupt erreichbar ist. KEINE Codeänderungen, Commits, Pushes, Merges, Deployments, zusätzlichen Berechtigungen, kostenpflichtigen API-Aufrufe oder Zugriffe auf private Consumer-Daten. Falls keine Codex-Cloud-Umgebung eingerichtet ist, die exakte fehlende Einrichtung als BLOCKED_CAPABILITY melden. Dies ist nur ein Read-only-Transport-Smoketest, keine Freigabe für autonome Codeänderungen. |
|
To use Codex here, create an environment for this repo. |
Combined integration checkpoint — 2026-11-01
Head
39c8df3c62d1d9c2e86d691b34b47067e37e871aincorporates the current text-start candidate and all of #79 (5ab32fd), preserving both histories. One existing PR remains the integration unit.Independent review reproduced false DONE_VERIFIED when a successful verifier replaced an approved file with a symlink. A second real-Git regression reproduced executable-mode drift. Both cases failed against the previous candidate; both now block before staging. After GREEN, modified regular-file type, permissions and approved content must still match. Registered commands remain trusted code, not a sandbox.
Local combined suite: 334 tests run, 333 passed / 1 platform skip / 0 failures. Both completion gates passed on local commit 0339075; the remote commit has exactly the same Git tree
487dcb77419ad791f527c98cb4226fdd641543ee. Remote exact-revision gates and hosted Linux/Windows CI/secret scan must be read separately before integration. No new live model call, consumer-pin update, machine action or deployment. User authorized integration in the current session. Historical standalone live runs below remain bound to their original revisions.Preserved prior evidence
Current text-start candidate — 2026-11-01
Head
a0b1352d530f3a67e80acfbfb758de8118930885; implementation685c361408879d3e548a1f8ba5fcee831945e676plus a docs-only Windows path-limit note. An authorized host now supplies approved public UTF-8 task text, trusted project profile, stable submission ID and exact expected source in onegithub_submit startcommand. It automatically composes/publishes the existing input schema, executes the existing GitHub handoff and returns the automatically published receipt. No hand-built JSON, manually transferred comment ID or intermediate user copy/paste. No second orchestrator.The local profile supplies every allowed path and verification ID, with mandatory RED. New explicit
github.allow_task_comments: trueauthorizes public input text separately from existing result-comment/claim-ref scopes. Numeric repository/operator IDs, selected issue and caller submission key bind the submission. Existing GitHubAPI.reserve, Git claims, SideEffectIntent, action policy and handoff core are reused; one POST only, exact owned marker reconciliation, no replay on missing/conflicting evidence. No new dependency/service/credential/permission/daemon. Claim and raw recovery remain retained.Real successful one-command run on implementation685c361: automatically submitted input6561200119 -> task
gh-1390342805-6561200119-> sourceccfc83fe9f4091ad2d844f72127a0564737cc31c-> actual signed-in Codex CLI0.166.0-alpha.5.1 -> onlyoperation: subtract -> addin the synthetic JSON fixture -> RED exit1/GREEN exit0 (two numeric cases) -> candidate4e313965c25ec10d712879149cfb5104adc67912-> receipt31479c74a1ac6521124b1166bb28134788ffdd6c309cdfcbc12de54fe2a0e63f-> automatically published/GET-confirmed result6561203107. Full CLI22.8496244s; runner17:13:20.456781–17:13:29.843793UTC (9.387012s). Exactly one actual provider call in this continuation, reported10939input/120outputtokens; model identity/money/total session tokens UNKNOWN. Existing ChatGPT login, no API-key environment present. Host separately pushed isolated synthetic candidate branchcodex/issue77-text-result-20261101for inspection; candidate push is not adapter functionality.Independent acceptance: separate agent/CLI/GitHub connector retrieved the public input/result, revalidated local receipt, clean source/candidate and exact one-value diff, then reran the registered verifier successfully. Remote status explicitly remains
github_report_not_local_reverification. Host independently repeated the identical real start: same input/result/receipt, original result record hash unchanged, no new model or POST. Actual stale-source control stopped before submission state, claim or worker.Failures retained, not hidden: first input6561169087 stopped UNKNOWN before workspace/provider because claim readback was not confirmed; later REST/Git matched the retained own lease. Original exception cause remains UNKNOWN. Second input6561186926 stopped before worker at a reproduced Windows
Filename too longin worktree creation. Both old claims/inputs/lease records remain; no replay, cleanup, system-right or Git-config workaround. After confirmed runner exits/read-only reconciliation, a new approved submission ID and shorter consumer-owned recovery path produced the successful run. This was not a first-try success; two host interventions were needed, zero user intermediate transfers.**Tests:**12new transport/real-Git tests PASS; the one-start behavioral contract first failed RED (UNKNOWN vs DONE_VERIFIED). An initial missing-module error was not counted as behavioral RED; one incomplete testdouble's missing REST updated_at field was corrected before GREEN. Full local307tests in56.263s:302passed/5skipped/0failures. Existing completion gates PASS on exact finala0b1352; diff whitespace PASS; worktree clean. Independent targeted suite12PASS. Final CI41330505450 SUCCESS: Ubuntu307tests/1skip11.516s, Windows307tests/2skips91.062s, both gates and repository-policy PASS. Actual tested synthetic merge
49213c21a1ceede3426941ed631fe49404f469bdcombines finala0b1352 with unchanged main673c558. Secret scan41330505442 SUCCESS. Implementation685c361 also had its own green CI41330097882 and scan41330097877 before the docs-only follow-up.Bounded one-command public-text path: DONE_VERIFIED. Overall arbitrary/unattended Chat–Work–Codex kickoff remains PARTIAL_VERIFIED. A capable host must still select/reconcile the project and trusted narrow profile. No invented cross-session access, unattended trigger, product merge, CORA/dentalCOM change, consumer-pin update or modified foreign workspace. Original copy-count/whole-session cost and duration were not instrumented: UNKNOWN. EN/DE operating instructions include exact invocation, public-data scope, idempotency and the observed Windows recovery-path limit.
Historical implementation and acceptance receipts
Current candidate hardening — 2026-11-01
Head
28c6552a8ac7f5759ef62131fddbc6009386a179. Actual real-Git regression tests exposed two false DONE_VERIFIED cases in the prior runner: a GREEN verifier could stage an unapproved file, or insert an unapproved commit, and that extra content/history entered the final candidate. Both new tests were RED (2 failures, unexpected DONE_VERIFIED) before the fix and GREEN afterward. The runner now requires candidate HEAD to remain the bound source after RED, before apply and before commit, and rejects a nonempty index before staging its own approved delta. No tests weakened, foreign state cleaned or permissions changed.Four added real-Git counterexamples cover staged extra files, verifier-created commits, RED advancing history before provider, and candidate history advancing before apply. Ordinary successful execution/receipt recovery remains covered by the full suite. EN/DE operating docs describe the boundary. Registered verifiers are trusted programs, not sandboxed; this detects their side effects rather than preventing arbitrary host actions.
Self-verified: full local suite295tests in54.021s:290passed,5skipped,0failures. Both existing completion gates PASS on exact28c6552; diff whitespace PASS; final worktree clean. A real read-only lookup of the retained earlier live task correctly returns UNKNOWN/saved_receipt_not_current_or_complete under the changed verifier fingerprint. Historical recovery and comments remain intact. No new real model call was made or claimed for this fix.
GitHub evidence: CI41313821928 SUCCESS; Ubuntu295tests/1skip in11.087s, Windows295tests/2skips in69.782s; both completion gates and repository-policy PASS. Secret scan41313821914 SUCCESS. Actual tested synthetic merge
56d1ec7b316fec4c1254335fcf73a9453184bd03combines head28c6552 with unchanged main673c558. PR remains OPEN/DRAFT, no product merge.This bounded correction is verified. Overall cross-surface objective remains PARTIAL_VERIFIED: the prior real GitHub/Codex roundtrip below remains historical evidence at its recorded harness revision; no unattended Chat/Work/Codex trigger has been installed or claimed.
Earlier transport and live-run receipts (historical)
Current verified GitHub transport — 2026-11-01
Head
a57a7509e13536a4048f57f6235ba154b7147ed5, continuing #77 on this existing draft. Operator-authored GitHub comment -> exact public repo/issue/author/source-ref checks -> atomic local claim plus globally unique Git execution-ref claim -> existing isolated runner/Codex provider -> registered RED/GREEN -> candidate commit -> automatically published sanitized receipt summary. No new service, dependency, credential, permission, daemon or product merge.Uses existing Git credentials noninteractively and official github.com REST. Trusted local profile explicitly authorizes issue summaries and
loop42-claims/TASK_IDrefs. Nonce claim commits have the unchanged public source tree; normal push lets one sibling claim win without force/deletion. Source/comment are rechecked before and after provider. Results omit local paths, raw logs/prompts, credentials and model prose. SideEffectIntent and publication claim suppress blind POST replay after ambiguous failures. Remote status explicitly labels reported evidence, not local re-verification.LIVE positive: input comment6557433634, task
gh-1390342805-6557433634, sourceccfc83fe9f4091ad2d844f72127a0564737cc31con the isolated synthetic test branch. Real Codex CLI0.166.0-alpha.5.1 produced only subtract->add in the synthetic JSON fixture; registered verifier RED exit1 / GREEN exit0, two numeric cases. Candidateb27071c35c4e1f96ebbd05cb76cfe8a9edbd6639, receipta4b8f7f4c1bda22ca8e30de3a6255005013baea0ee8b1729ffe29b109d66a128. The adapter itself posted and independently GET-confirmed result6557437144. Execution claimdb46779057278b4adfd736542094258cdc32ab29; source checkout unchanged. Local execution+claim9.164750s (UTC11:39:46.303575–11:39:55.468325); reported10944input/120outputtokens, monetary cost/model identity UNKNOWN. One real provider call in this continuation. The host separately pushed the synthetic candidate branch for public inspection; candidate push is not an adapter capability.Independent acceptance: second agent/CLI retrieved the remote result, reconstructed current input binding, revalidated local receipt and source/candidate state and reran the registered verifier (PASS2synthetic addition cases). GitHub connector independently read input/result. This is actual GitHub retrieval, not an invented second ChatGPT UI session.
Negative: actual duplicate run reused byte-identical local record and same single result comment, no new worker. Another recovery directory stopped UNKNOWN before creating local state. Stale control6557448548 stopped UNKNOWN/exit2 before any local or remote claim/provider. Automated tests include a real two-thread bare-Git claim race (one winner), edit/source races, missing/foreign authority, oversized/paginated responses, conflicting or lost result and strict remote-summary evidence.
Verification: local291tests OK/5Windows capability skips, including23new transport tests; both existing completion gates PASS at exact head. Fresh CI41302888466 SUCCESS: Ubuntu291tests/1skip, Windows291tests/2skips, gates and repository-policy PASS on tested merge
7f78ca38e3c32b137ae4df5caae5da41c8fe9daeinto unchanged main673c558. Secret scan41302888506 SUCCESS.Bounded GitHub-to-local-to-GitHub path: DONE_VERIFIED. Overall arbitrary Chat/Work/Codex automatic trigger: PARTIAL_VERIFIED; no unattended trigger or cloud environment configured here. The cloud smoke-test response on2026-10-29 requested repo environment setup; no new cloud success is inferred. Public claim refs disclose the explicitly configured public Git author; raw recovery stays private. No private consumer data, CORA/dentalCOM change, consumer-pin update, merge/release or false background monitoring. Core
handoff_cliremains usable without GitHub; transport requires the explicit extra profile scopes. EN/DE operation instructions updated.Earlier implementation receipts (historical)
Refs #77. Candidate b435ab3.
A capable host can now execute a bound task once, call the installed signed-in Codex CLI for a read-only ChangeSet proposal, apply only explicitly authorized existing-file modifications in a detached worktree, run registered verification, commit the candidate and revalidate its receipt from a separate CLI process. Duplicate/ambiguous attempts never automatically rerun. No daemon, new service, key, dependency, push/merge authority or consumer-pin change.
Reuses integrated ChangeSet/policy/executor, DispatchTask/permits, VerificationRegistry/process scope and VerificationReceipt. git_workspace.py is byte-identical to draft #45 at 25ff944 (blob40a47eba9e3f3476c64141d45b3189ad77657f52), without adopting the retired worker stack. #31 remains separate open-work discovery; no duplicate implementation.
Validation: full local suite268tests OK/5Windows capability skips;20 new handoff/CLI tests included. Both existing completion gates PASS at exact b435ab3; diff whitespace PASS. Independent review exposed and corrected source movement during GREEN, receipt fingerprint/verifier/time validation and prompt/runner limit mismatch. Fresh hosted CI40835421856 SUCCESS and secret scan40835421849 SUCCESS. Ubuntu:268tests OK/1skip; Windows:268tests OK/2skips. Both completion gates and repository-policy PASS. Jobs tested synthetic merge d6d8dbc of exact head b435ab3 into main673c558, not a product merge.
LIVE E2E on this exact harness commit, official Codex CLI0.165.0-alpha.1.2 / existing ChatGPT login, explicitly synthetic input: task issue77-final-addition, source449bf3065bb453c10ddd1d36950f7f56a08c7756 -> generated ChangeSet changes subtraction to addition in answer.py -> RED1failure/GREEN1test -> isolated commitfc5ca6a8368af645ab3fd7417d3b80ee42c2d267, tree807dcedb6687fddb556361afa96eef2295eb2e3f. Source checkout unchanged. Receipt253d194907d0df817824ad1eca70fe1fabd7672fc47af64d4a9d8d1d966ea779; verifier fingerprintccb9ccb7f3655f5d172340d49eabd2f0cb15d8b580e7cf5e088d94049c51d843. UTC07:24:23.637706–07:24:29.976184 on2026-10-29 (6.338478s); CLI reported10884input/125output tokens; money and actual model identity UNKNOWN. No emitted tool events were accepted. Raw records, local paths and user configuration stay private. The synthetic candidate commit is local, not a GitHub-hosted product/CI commit.
Real duplicate invocation returned the exact retained commit/receipt without rewriting the record. A stale all-zero source revision was rejected before claim/provider. Unit fault tests also cover concurrency, interrupted/missing receipt, red CI-equivalent verification, scope/permission failures, mutated evidence, future receipts and source movement. Deterministic providers in tests are labeled doubles and are separate from this actual AI run. Earlier CLI schema failure (strict oneOf unsupported) was diagnosed; CLI schema now uses supported anyOf without relaxing ChangeSet validation.
Limits: PARTIAL_VERIFIED for the cross-surface objective. Direct arbitrary Chat/Work/Codex session dispatch and an unattended event trigger are not installed or proven. A host must have GitHub plus local execution; a host without execution is BLOCKED_CAPABILITY for that step. The CLI never publishes reports itself: an authorized host can write a reviewed nonprivate receipt summary here; other authorized sessions can retrieve it through GitHub. Local CLI status needs retained recovery/workspace. Read-only CLI is not proof of zero offered tools or a filesystem-read privacy sandbox; use approved data only, no patient/confidential data. Registered verifiers execute trusted code with operator rights. No signatures/host-attacker protection claimed.
Operator effort: before-copy count was not measured (UNKNOWN); this live run used one host start and zero user intermediate transfers. Existing KI-Multistecker was inspected read-only and its selected-text boundaries preserved. Other consumer repositories remain unchanged. No merge/release or claim of fully automatic ChatGPT integration.
Independent acceptance: a separate agent/CLI entry revalidated the final receipt, recomputed its fingerprint, inspected the exact one-line synthetic diff and reran its real test (1PASS). That agent then retrieved this PR and issue77 comment6490666535 using only the GitHub connector and matched the same task/commit/receipt values. This proves independent local verification plus remote-summary retrieval, not another ChatGPT UI session or an installed trigger.