Repository navigation
Attribute child executions and add bounded caller discovery - #147
Conversation
PR SummaryMedium Risk Overview Introduces read-only Reviewed by Cursor Bugbot for commit bfcdf30. Configure here. |
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
…dren-at-exit # Conflicts: # distributions/multica/agentctl-portable.bundle.json # distributions/revision-manifest.json # internal/portableasset/assets/agentctl-portable.bundle.json # internal/portableasset/assets/revision-manifest.json
Outcome
Child launches gain immutable managed-parent/native-caller attribution and bounded
agentctl childrendiscovery. The query returns local collection IDs and fails closed on incomplete reads, paged membership mutation and corrupt selected metadata. Native CLIs and Multica retain execution authority; parent-exit enforcement is separate.Final repair head:
e654157fddad41f908ca6f82b024b4e7e631b9a8. Independent review5 baseline:d20744400abb79a5e9b4c9f16318700db472fc97. Subscription repair commit:3cc6980385ac7df0a08f679a6345b5d643165a6e. Before push, a fresh fetch found main had advanced to already-merged PR150 ata4d9bd57e986b4488d829b62dfbbbbf477da8413(OpenCode transport recovery). Strict up-to-date protection required its ordinary local integration. The merge parents are the repair commit and that published main commit. Its four conflicts were generated bundle/manifest hashes, recomputed from the automatically merged canonical skill; canonical and embedded copies match. All subscription production/regression files and original round4 mechanisms remain byte-identical to the repair commit. The approved Go 1.26.11 security base remains included. No PR was merged. Public APIs and JSON for this repair are unchanged.Final behavior and scope
Three verified corrupt-state fixes
ErrCorrupt; oversized values fail the bounded-query check.ErrCorruptinstead of a nil-pointer panic when the idempotency or execution bucket is missing. Read-only schema validation also catches this before explicit parent identity hydration. No migration or repair write occurs.Public API signatures, JSON fields/enums/schema version, compatibility epoch, membership certification and mixed-version semantics are unchanged. Discovery corruption uses the existing exit-70 structured error; unavailable explicit parent identity evidence retains its earlier exit-9
children_query_incompleteconvention. Every error is unknown coverage, never successful emptiness.Review5 subscription identity/fanout parity repair
Discovery and actual event fanout now share
decodeFanoutSubscription, using the existingfanoutUnderstandsandvalidateStoredSubscriptionIdentitypath. Supported active records must have valid typed identities and bucket key/record ID agreement. Discovery returnsErrCorrupton an invalid understood record anywhere in the bounded metadata scan; a valid matching record cannot claim coverage when another record would abort fanout. Key disagreement now fails directly as corruption rather than later during delivery lookup.Compatibility filtering retains its existing order: inactive and unsupported subscription/filter/destination records are skipped without counting as evidence. Malformed JSON or structurally undecodable records abort both scans, including inactive/unrelated records. No new revision/envelope requirements are imposed. The processing/record/byte/read-lock bounds, legacy writer fences, scoped membership certification, waiter/attention behavior, metadata retention, and all three round4 mechanisms are unchanged. Corruption retains structured exit 70 with no successful
complete: true; no read-side repair, migration or maintenance is introduced.Regressions and counterfactuals
The review5 store table checks real transactional fanout and both parent/session discovery scopes. It covers malformed subscription IDs, mismatched valid IDs, malformed keys, invalid origin/filter/coordinator/cursor identities, malformed records, and an independent valid matching record followed by corrupt unrelated metadata. It asserts fanout rollback. Controls cover valid exact/unrelated records, inactive/expired records, unknown filters/destinations and null compatibility. CLI probes cover both scope forms, structured error output, successful valid/compatibility controls, no maintenance and unchanged journal bytes.
Exact
d20744400abb79a5e9b4c9f16318700db472fc97production files are restored with a Go overlay while retaining the new tests. The store command exits 1 with eight failing cases; the CLI command exits 1 with four failing cases in both scopes, reproducing exit 0 withcomplete: true, count: 0. Malformed-record and compatibility controls pass on both versions. Without the overlay, both new suites and the original round4 corruption/read-only probes pass.The original round4 acknowledgement/tombstone/bucket fixes and their tests are unchanged. Their exact
9799439e7f837d82ae75dbf17abd2b8033873388counterfactuals remain documented: 11 acknowledgement cases fail, nine tombstone cases fail, and the missing-index probe panics on that baseline.Evidence: review5 parity, controls and exact-baseline counterfactuals, original round4 repair.
Validation
Use exact Go 1.26.11 with disposable test/cache storage, the git-only shim and fake notification commands:
Fresh integrated Go 1.26.11
make cipassed on this head: vet and all Go packages (CLI 359.735 s, ANX 10.651 s), schema/link/script checks, embedded/distribution consistency, live-owner release-skew compatibility against v0.19.0 and v0.21.10 (epoch 1), and build. Linux-only systemd fixtures were skipped on macOS.Fresh integrated focused stateful races passed: CLI 158.514 s, store 82.821 s, adapter 12.598 s. The filter includes real fanout, subscription compatibility and corruption, membership fences, attribution/replay, cleanup, exact waiters and remote collection, plus the incoming main OpenCode/native recovery, continuation/resume and steering cases.
git diff --checkpasses and the worktree is clean.Before main advanced, full
make cipassed on repair commit3cc6980. Its first attempt failed the unchanged ANX local-origin test with a nil lookup (the subprocess has a 500 ms deadline); ten isolated repetitions passed in 4.756 s, and the subsequent full CI run passed without a concurrent race job. ANX source was not changed. The initial failed attempt is retained in evidence, not waived or reported as passing. Pre-integration focused races also passed (CLI 139.613 s, store 139.401 s). Fresh integrated results are recorded above rather than inferred from those earlier checks.The normal push and its actual
make pre-pushhook passed using exact Go 1.26.11 and plain git first for tests. The final fetch confirmedorigin/mainremaineda4d9bd57e986b4488d829b62dfbbbbf477da8413, already an ancestor of this head, and no unseen feature commits were overwritten. The published candidate ise654157fddad41f908ca6f82b024b4e7e631b9a8; the worktree is clean.All seven exact-head hosted checks passed on
e654157fddad41f908ca6f82b024b4e7e631b9a8: Verify, stateful race tests, Go vulnerability scan, Actions/Go/Python analyses and aggregate CodeQL. The bounded CI waiter exited green and GitHub reportedCLEAN. After that, the authorized ready transition triggered Devin Review at this exact head, which completed SUCCESS. All eight reported exact-head checks are green. GitHub reports the open PR ready (isDraft: false) with merge stateCLEAN. The bounded CI and Devin waiters exited green. The parent still requires fresh independent review6 on this frozen head; automated success does not supply that verdict.Hosted evidence: Verify, stateful races and vulnerability scan, Actions/Go/Python analysis, aggregate CodeQL, Devin Review.
The shim was verified to use plain
/usr/bin/gitfor tests and the pre-push hook; task/worktree operations use the managed wrapper. Tests isolate HOME/XDG state, use fake native/SSH fixtures and blocked notification commands. No real provider/page/Telegram call is used. All newly owned test/cache/process output is disposable. Shared refs are fetched immediately before normal push; no force/admin/hook bypass is used.After Devin completed, all seven existing automated threads were rechecked and remain resolved, with zero unresolved threads and no new automated finding. No finding was dismissed or waived. Final fresh shared refs still show
origin/mainata4d9bd5, an ancestor of the published head.All owned test jobs and bounded waiters completed. The heartbeat was stopped and reaped; no leftover test/watcher retains the worktree or task scratch cwd. The active parent-managed execution worker exits with this handoff. The parent records outcomes and launches independent review6; this implementer launched no independent/delegated review.
Remaining limits and integration
No GCP tier, production call, credential/spend operation, real page/Telegram, host installation, PR merge, tag, release or ANX/bus write was used. The parent records outcomes. Owned test/waiter/heartbeat cleanup is complete; the active managed execution ends with the handoff.