Repository navigation
Let agents propose credential instructions and groups through approved writes - #163
Merged
Merged
Conversation
|
Review: changes requested before merge (display only). The approval card applies one Before/After template to every operation. On a create there is no "before", so the card shows empty "Before" labels and Before rows reading None / Ungrouped; on a delete the "After" rows are meaningless. Make the card follow the operation:
This replaces item 7 in #162, which I am removing there. |
|
Follow-up review (display only), requested by the maintainer before merge:
|
This was referenced Oct 8, 2026
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.
Closes #161
Summary
create_credentialandmodify_credential, including metadata-only modification, clearing instructions and moving to Ungrouped. Catalog entries expose visible groups.Unchanged/不变note. Instructions and groups fit their content up to 60 and 30 points, then scroll; new groups are marked and actions fit the 680-point budget in English and Simplified Chinese. Delete omits the frozen-content heading, reveal button and authentication note; create and modify retain them.Both review follow-ups change presentation and tests only. The approval digest,
BrokerCredentialWriteSummary, freeze and commit behavior are unchanged, and create/modify reveal state and authentication behavior are preserved. Component equality uses the existing material digest as well as the existing summaries, so replacing a value with another of the same length does not incorrectly displayUnchanged. No UI string changes were needed in the second follow-up.Diff stat
git diff --stat origin/main...HEAD: 26 files changed, 1166 insertions, 89 deletions, from merge basee7e77ecdc294f6aa86284e8b98215d4f04ebec77. Main advanced to6811d1ea8992b24229b0ac3297fba5e2a9aabcdewith release-packaging changes during review; the PR diff excludes those unrelated changes. Scope covers Broker types/catalog, Vault freeze/transaction, helper schema/parsing/guidance, approval presentation/localization, scoped tests, the screenshot export allowlist and ADR/features documentation. The second follow-up compared withf260ec4307707b11ed66981b7cd8f2ce565fd875changes only the approval card and related App tests: two files, 120 insertions and 36 deletions.Tests
Final candidate:
b4e7d166bc6454c61346836538fd492d34899d71.Final local verification passed (exit 0). The affected App selection passed 28 tests, 0 failed, 0 skipped: metadata/rendering 7, operation-aware presentation 7, prompt 6 and localization 8. The three new tests each cover English and Simplified Chinese: actual rendered height grows with short instructions and groups, reaches the existing caps and stays stable for overflow; delete removes the complete frozen-content block while create and modify retain its full measured height. These are offscreen unit layout checks, without presenting a window or capturing an image. The existing group-height test now allows short content to shrink while verifying the same cap.
The seven operation-aware tests still pass both language parameter cases (14 combinations), covering create, delete, metadata-only modify, value-only modify, clearing metadata, same-length value replacement and missing digests. The 680-point prompt height tests and the check that metadata rendering never invokes reveal authentication passed.
Earlier implementation verification remains applicable to unchanged Broker/Vault/helper code: the broad synthetic selection passed 83 tests at
03f1e7586eedfdddc40c9d5e08ad1fa5d81d6136; the affected Vault selection passed 17 tests atb7986c85066700f33f4727e9aa18e5274e93f89c; the affected App selection passed 18 tests at25eefc9d41fdcb9ca429a165d4cad5f4d6c5b799, all with zero failures and skips. The commands were:These tests verify byte limits, unchanged material/private metadata, Hidden rejection, metadata approval binding, separate write authentication, transaction rollback/retry and equivalent-group reuse. No local full suite, desktop E2E, app launch or screenshot capture was run.
Final CI run 37763651577 is associated with the candidate SHA. build-and-test and basic-ui-flows both passed. Full Swift suite: 1054 executed, 1051 passed, 0 failed, 3 skipped. All 182 automation tests passed, with zero failures or skips, and every hygiene/module check passed. CI checkout
b38bd3954ea5202015f4030a5cb1be7fa3b42f62merges the candidate into main at6811d1ea8992b24229b0ac3297fba5e2a9aabcde, including its release-packaging updates.Compared every XCTest identity and outcome with the second-review baseline CI at
f260ec4307707b11ed66981b7cd8f2ce565fd875(1051 executed, 1048 passed, 3 skipped): all 1051 outcomes are unchanged, all three added tests passed, and there are no missing tests or new skips. Compared with the last green main CI baseline ate7e77ecdc294f6aa86284e8b98215d4f04ebec77(1025 executed, 1022 passed, 3 skipped): all 1025 outcomes are unchanged after mappingBrokerCatalogTests.testCatalogExcludesHiddenCredentialsAndAllSensitiveMetadatatotestCatalogExposesVisibleGroupsAndExcludesHiddenCredentialsValuesAndPrivateNotes, and all 29 added tests passed. Main's subsequent release-packaging commit changes no Swift source or test files.The same three tests are skipped in both baselines and the final candidate:
CodexCLIContractTests.testInstalledCodexMCPAddGetJSONContractUsesIsolatedConfiguration: the installed CLI executable/version contract is not configured.LegacyFileWriteTransactionTests.testAbruptFileCommitProcess: only its isolated crash subprocess invokes this entry.NativeBootstrapFixtureGenerationTests.testGenerateSyntheticNativeBootstrapFixtures: explicit fixture generation only.Desktop acceptance: 15 required flows passed, 0 failed, 0 skipped. Screenshot suite: 4 passed, 0 failed, 0 skipped. Independently checked result JSON and raw test identities:
ScreenshotE2ETests.testMetadataWriteApprovalScreenitself passed, including its create-layout label assertions, a real synthetic MCP write, screenshot capture, clicking Deny and the resultingdeniedoutcome. Its result is verified separately from the job status because the optional screenshot step permits failure.All 15 PNGs exported. Inspected
screenshots/15-approval-credential-metadata.pngin the final-head CI artifact: short instructions and the group use their content height with the fixed blank gaps removed; complete proposed text, the new-group marker, the retained create reveal section, Approve Creation and Deny are visible. The artifact expires on October 15 under the existing seven-day retention policy.Checks
Hygiene has zero violations and module dependencies passed locally. Broker protocol remains version 1. Permission policy, runtime/delivery, the App editor/sidebar and client configurations are unchanged. Only synthetic values and isolated test stores are used. CI also runs the automation checks; the implementation's three synthetic screenshot-export checks passed for complete, missing and duplicate metadata screenshot manifests.
Removed the second follow-up's owned Swift build directory (1,039,843,937 bytes), SwiftPM metadata directory, consumed local/CI logs and inspected CI download (7,843,659 bytes). Root ownership and symlink checks passed; internal SwiftPM links resolved within the owned directory, and
lsofshowed no open files before removal. No task build/test process or build directory remains, and the worktree is clean. Data volume at cleanup: 82 GiB available. One sharedtestmanagerdservice remains; unrelated services and other tasks' directories were untouched. The open PR's branch/worktree remain for review.Deviations and questions
The coordinator approved the implementation's additional
FrozenAgentTextWrite.swift,VaultStore+AgentWrites.swift,ScreenshotE2ETests.swift, metadata-screenshot branch inTests/AskKeyTestSupport/E2EBrokerScenario.swiftand screenshot export entry inscripts/e2e-report.py; #161 Scope was updated. The App save path already uses the 4 KiB UTF-8 instruction limit, so no limit deviation was required. Group spelling/existence changes while approval is pending fail closed. #162 is documented only; no batch group-management tool is implemented here. The two display follow-ups address all coordinator review points without changing approved write contents or authorization behavior.