Repository navigation
fix: gate encrypted agent starts by signed device and user turn - #1992
Merged
Merged
Conversation
Model: gpt-6.1-sol
Model: gpt-6.1-sol
Model: gpt-6.1-sol
Model: gpt-6.1-sol
Keep missing originals retryable without consuming the turn. Record the unresolved UI account-ID binding regression explicitly. Model: gpt-6.1-sol
Treat account IDs as display metadata and defer encrypted dispatch admission to the native device gate. Preserve earlier journal evidence and cover real UI accounts, revoked devices, Guest and removed members. Model: gpt-6.1-sol
Model: gpt-6.1-sol
Resolve E2EE scope documentation mechanically, retaining minimal plaintext presence and execution authorization rules. Normalize the automatically merged API documentation tables. Model: gpt-6.1-sol
zxch3n
marked this pull request as ready for review
October 28, 2026 06:15
zxch3n
pushed a commit
that referenced
this pull request
Oct 28, 2026
CI checks out the PR merge commit but passed pull_request.base.sha as the docs base. That SHA can predate main commits merged since, so the new "new note needs an owner link" gate attributed notes added by other PRs (#2003, #1992) to this one. Pass the merge commit's first parent, read from the shallow commit object, and fetch only that commit. Model: claude-opus-5-5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lodyai Bot
pushed a commit
that referenced
this pull request
Oct 28, 2026
* docs: keep Agent Notes as maintained decision memory Narrow note creation to durable rationale, require a supersession check that archives replaced notes, keep implemented notes current with the code they cite, and replace the hard 8192-byte AGENTS.md gate with word ceilings that can be raised with a recorded reason. `pnpm run docs` now fails on ceiling breaches, unarchived Supersedes targets and proposal headings in changed implemented notes, warns on run-log phrases, and lists active notes citing missing paths. Adds the archive-agent-notes skill and archives the superseded trigger note. Model: claude-opus-5-5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs: link notes from current-state owners and maintain them on read Make Agent Notes retrievable through the documents agents already read: every new note must be linked from a README, .agents/docs page, AGENTS.md or Spec, and `docs status` lists the 589 active notes that are not (`unlinkedNotes`). A task that relies on a stale, unlinked or mis-staged note fixes it in the same PR, and the PR implementing a proposal moves it to implemented/. Root guidance now starts reading from owner docs and follows their note links; notes rules gain Linking and Maintenance-on-read sections and a recorded 1400-word ceiling. Model: claude-opus-5-5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix: compare docs checks against the merged base commit CI checks out the PR merge commit but passed pull_request.base.sha as the docs base. That SHA can predate main commits merged since, so the new "new note needs an owner link" gate attributed notes added by other PRs (#2003, #1992) to this one. Pass the merge commit's first parent, read from the shallow commit object, and fetch only that commit. Model: claude-opus-5-5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: LodyAI <agent@lody.ai> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.
Related issue
Problem / pressure
Encrypted Meta/history dispatch and realtime offers need one durable execution decision per user turn. Admission must also verify the original signing device, current ledger authority and ownership of the target machine, including after snapshot recovery or a confirmed credential revocation.
Summary
agent-start:<userTurnId>. Preserve original receipts, clock floors, explicit reset, and completed/uncertain evidence across restart. Uncertain execution is never automatically resubmitted.host.authorizeExecution(workspaceId, requesterDevice). The verified signing device must be active, have a current non-Guest member role, and belong to the same ledger membership as the target machine device. Another device of that member can execute; cross-member execution fails withe2ee_machine_not_ownedand “加密工作区暂不支持使用其他成员的机器”. Ordinary workspace visibility/project-sharing checks remain unchanged.Execution boundary
The optional
LodyOptions.authorizeEncryptedExecutionoverride keeps the native host signature:ExecutionAuthorizationisAuthorizedorDeniedwith reasoninvalid-request,not-authorized,e2ee_machine_not_owned,unavailableorclosed. The durable signed turn's original 15-minute execution window is independent of the host's ledger-read cache. Future encrypted realtime ingress must provide equally verified origin evidence through this boundary; this PR does not implement that transport.Validation
Lody.createregressions use native custody, signed ledger/content and SQLite, with synthetic cloud I/O and an ACP harness; no authorization callback/mock host is injected. They cover same-member devices, other Members, Guest/revoked/removed signers, real UI account IDs, snapshot backfill, missing originals, confirmed member/device revocation and ordinary network recovery.not_visibleandproject_not_shareddenials.