Feat/task memory evidence pipeline - #68
Merged
Merged
Conversation
The suggest_followups ordering/gate rejections and the pre-gate git-committer withhold are control-flow diagnostics the model resolves on its own, but they reached the CLI without userMessage/autoRecovering and surfaced as user-visible error banners logged at error level. Tag them as auto-recovering with concise user summaries, log auto-recovering notices at debug, and sharpen the rejection wording so suggest_followups is described as the final output of the turn.
The pre-push memory-drift guard flagged cli/knowledge.md and common/knowledge.md as stale against their sibling src/ trees. Record how handleRuntimeError splits runtime errors on autoRecovering (log-only debug notices vs rendered failures) and how the optional userMessage/autoRecovering fields on printModeErrorSchema are meant to be consumed, so the guard and future readers both stay in sync.
Replace the completion summary emoji status rows with a titled Run summary box of aligned label/value rows, so each row reads without relying on emoji width or color alone. Restructure the status bar into three regions - status label, left-aligned chip cluster, right-pinned scroll and stop controls - and give the scroll-to-bottom button a fixed reserved width so hovering it no longer reflows the row. A shared isScrollButtonCompact predicate keeps the chip-budget reservation in step with the form the button actually renders.
The terminal policy exempted only temp-root-prefixed operands, so the bare temp-root operand in the tmux-cli stale-capture sweep was denied and the whole setup script failed with a misleading writability error. Gate on the resolved temp-root relationship instead, so sibling-prefix directories stay refused. Also split background ampersands before env-dump classification and fail closed on unparseable fragments that name a dump utility. The agent-runtime scope backstop hard-blocked every absolute path, so the SDK read-only owned-temp exception (job logs, tmux captures) was unreachable through read_files. Allow owned-temp reads there while keeping writes hard-blocked, and refresh cli/knowledge.md for the pre-push memory-drift guard.
Tools were contained to the project root plus the openbuff-owned temp namespace, so a user could not read their own config directory (logs, harness state) even though reading it is a legitimate non-mutating action. Add a third containment scope for a default-closed, configure-once allowlist of roots outside the project that read-only tools may reach, configurable via readableRoots in openbuff.json. The write-path resolvers are left untouched, so a write physically cannot reach an allowlisted root; the filesystem authority also fails closed on the new scope. The resolver dereferences exactly once and refuses mandatory-sensitive files, so no consumer can forget that check. readableRoots grants filesystem authority rather than influencing model routing, and project config wins the config merge, so a cloned repository could otherwise allowlist credential directories. Roots are now attributed to their declaring config file and only config-dir declarations are trusted by default; set OPENBUFF_TRUST_PROJECT_READABLE_ROOTS=1 to opt in to project-declared roots. The sensitive-path list also gained the credential carriers it was missing.
Records the read-only external-read containment scope, its default-closed configure-once registry, the write-path resolver separation that keeps writes out of allowlisted roots, and the path-aware credential carriers added to the sensitive-path policy. Required by the pre-push memory-drift guard, which flagged the file as stale relative to the sibling src changes.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
This change is