Repository navigation
feat(app-logic): async session extension context section with prompt language - #527
Merged
smart-ssh-coordinator[bot] merged 1 commit intoOct 14, 2026
Merged
Conversation
…language (#526) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
7 tasks
There was a problem hiding this comment.
Review
Verdict: approved
Review level: elevated
Blocking
- none
Non-blocking
- Windows CI job was still pending at review time; Ubuntu, macOS, browser, audit and startup jobs are green. Merge only on green.
- Spec 0038 line wrap in the edited paragraph is uneven (cosmetic).
Security checks
- Order unchanged: core text, heading, then redact, then fence. The diff does not touch redact/fence/untrusted-content flag logic. The return value still feeds
notes_presentin both callers. - No new path around FilterEngine/risk: the hook only returns text. The
None/whitespace early returns are unchanged, so a session without an extension is byte-identical. known_secrets,server_removedandgroup_removedstay sync and unchanged. Redaction of the section still uses the secrets-aware redactor (test kept in async form).- Adversarial: an extension returning a secret, whitespace-only text, or text for another server's scope behaves as before. The language argument is
parts.language, the same value used for the heading. - Tests: the new language/await test asserts the De and En texts and the absence of the other, so it fails if the language is not forwarded. Existing tests converted.
- Spec 0038 and ADR 0136 updated and describe behaviour. No changelog fragment is fine (internal API).
There was a problem hiding this comment.
Review
Verdict: approved
Review level: elevated
Blocking
- none
Non-blocking
- Spec 0038 line wrap in the edited paragraph is uneven (cosmetic).
Security checks
- Order unchanged: core text, heading, then redact, then fence; the untrusted-content flag still comes from the return value in both callers.
- The hook only returns text, so there is no new path around FilterEngine or risk classification. Early returns for None or whitespace are unchanged, so a session without an extension is unchanged.
- known_secrets, server_removed and group_removed are unchanged and still sync.
- Adversarial: a secret in the section, a whitespace-only section, and a section for another server scope behave as before. The language passed is parts.language, the same value as the heading.
- The new test asserts the De and En texts and that the other is absent, so it fails if the language is not forwarded. It awaits a tokio RwLock.
- Spec 0038 and ADR 0136 describe the behaviour. CI is fully green at bac114e, including Windows.
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 #526
Summary
SessionExtension::context_sectionis now#[async_trait]and receives the session'sPromptLanguage;append_extension_sectionis async and both call sites await it. Order, redact-then-fence and the untrusted-content flag are unchanged.Acceptance Criteria
None: done.Tests
fmt, clippy -D warnings, app-logic + app-shell tests, workspace build green locally.
Assumptions
No changelog fragment: not user-visible (internal extension API).
Spec
updated 0038
Manual test steps
None (no community extension registered; behaviour unchanged).
🤖 Generated with Claude Code