Skip to content

v0.7.67: provenance ffs, files, landing fixes, library post - #6492

Merged
waleedlatif1 merged 7 commits into
mainfrom
staging
Aug 10, 2026
Merged

v0.7.67: provenance ffs, files, landing fixes, library post#6492
waleedlatif1 merged 7 commits into
mainfrom
staging

Conversation

@icecrasher321

@icecrasher321 icecrasher321 commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

icecrasher321 and others added 3 commits August 10, 2026 08:18
…rom Automation) (#6489)

* feat(library): What Is an Agentic Workflow? (And How It's Different From Automation)

* content(library): restore original Zapier/Make wording in agentic-workflow post

---------

Co-authored-by: Sim Pi Agent <pi@sim.ai>
@vercel

vercel Bot commented Aug 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
docs Skipped Skipped Aug 10, 2026 6:03pm

Request Review

@cursor

cursor Bot commented Aug 10, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Changes execution-time secret projection, durable provenance import, and table/memory read behavior; default is more permissive (warn/continue) which can under-redact until enforcement is enabled, but reduces risk of workspace-wide run refusal from inexact sidecars.

Overview
This PR tightens secret provenance and redaction so large reads and legacy data do not permanently brick runs, while still documenting how operators can turn enforcement back on.

Durable provenance posture — Unrecorded or inexact sidecars on memory, table rows, and knowledge no longer latch the whole registry by default. A new env flag DURABLE_SECRET_PROVENANCE_ENFORCED_SURFACES (all or subsets) restores fail-closed behavior per surface. Call sites pass an explicit surface into importDurableSecretProvenance; table row loads skip bad rows on a page instead of voiding the entire query_rows result, with error-level telemetry when proceeding.

Redaction false positives — Literals true, false, and null are treated as non-identifying: they are excluded from matchers and durable provenance export, fixing mass boolean/[REDACTED_SECRET] rewrites when a flag variable held false. Typed numeric secrets like 123 still project; boolean/null primitives stay untouched in JSON and model paths.

Provenance narrowing — When a value cannot be fully scanned (large refs, traversal limits, opaque accessors), export over-approximates with all candidate entries instead of marking provenance incomplete and refusing downstream model boundaries.

Smaller changes — Workspace file editor maps .jsonl to Monaco plaintext to avoid JSON validation on JSON Lines. Docs add the new env var and a library article on agentic workflows vs traditional automation.

Reviewed by Cursor Bugbot for commit 156ee3e. Configure here.

@greptile-apps

greptile-apps Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR makes durable secret-provenance handling configurable for memory, table rows, and knowledge results, while reducing false-positive matching for boolean/null literals. It also treats JSONL as plaintext in Monaco and adds a library article.

  • Adds per-surface provenance enforcement controlled by DURABLE_SECRET_PROVENANCE_ENFORCED_SURFACES.
  • Allows inexact durable sidecars to remain readable with reporting when their surface is not enforced.
  • Excludes true, false, and null from resolved-secret matching.
  • Stops Monaco from validating JSONL as a single JSON document.
  • Publishes the “What Is an Agentic Workflow?” library article.

Confidence Score: 5/5

The PR appears safe to merge because no unacknowledged actionable defects were identified.

The changed behavior that permits under-redaction on unenforced durable surfaces and omits boolean/null matcher literals is explicitly documented as an intentional, feature-flagged compatibility posture, while enforced surfaces retain fail-closed behavior.

Important Files Changed

Filename Overview
apps/sim/lib/execution/durable-secret-provenance-enforcement.ts Introduces cached, environment-controlled enforcement for unrecorded provenance across three durable surfaces.
apps/sim/lib/execution/durable-secret-provenance.ts Extends durable provenance imports to apply the selected surface’s fail-closed or report-and-continue policy.
apps/sim/executor/handlers/agent/memory.ts Applies the new policy when loading persisted memory and importing per-message provenance.
apps/sim/lib/table/rows/secret-provenance.ts Allows non-exact row sidecars to be omitted from complete page provenance when table-row enforcement is disabled.
apps/sim/lib/knowledge/secret-provenance.ts Applies knowledge-surface enforcement while importing document and embedding provenance.
apps/sim/executor/utils/resolved-secret-match-policy.ts Classifies JSON boolean/null renderings as non-identifying literals that should not become secret matcher patterns.
apps/sim/executor/utils/resolved-secret-matcher.ts Filters non-identifying literals before constructing detection and rendering matchers.
apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/text-editor.tsx Maps JSONL files to plaintext so Monaco does not apply single-document JSON validation.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Store[Memory / table row / knowledge] --> Sidecar{Provenance exact?}
  Sidecar -->|Yes| Import[Import secret entries]
  Sidecar -->|No| Policy{Surface enforced?}
  Policy -->|Yes| Refuse[Fail closed]
  Policy -->|No| Report[Report and continue]
  Import --> Projection[Model-bound projection]
  Report --> Projection
Loading

Reviews (1): Last reviewed commit: "fix(provenance): feature flagged, inexac..." | Re-trigger Greptile

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 156ee3e. Configure here.

Comment thread apps/sim/lib/execution/durable-secret-provenance.ts
* fix(provenance): name the importer that condemned a run

A bundle that arrives already incomplete latches the whole registry one-way, so
every later model projection in the run refuses. #6483 made the refusal say what
went wrong; it could not say who. In production the answer was
reason=source-provenance-incomplete with 23 candidate importers and no way to
tell them apart, which is where the last investigation stopped.

Carry a stable origin across the import boundary and retain it beside the reason.
It inherits through forks and merges — the step that erased attribution before,
since a tool crossing forks, imports, then merges back — so the refusal names the
importer even though the latch happened frames earlier. Tool crossings take the
tool id, so a tool-sourced bundle identifies itself rather than being inferred
from timestamps.

Origins are caller-supplied strings rather than a closed union, so unlike reasons
they carry an explicit bound.

No behaviour change: the field is optional, additive, and read only when building
a log record.

* fix(provenance): attribute the path-scoped and short-circuit latches too

importProvenanceForValueAtInputPath took only { trusted }, so the five callers
that bind a crossing to an input path — the block, loop, parallel and workflow
resolvers, and the guardrails route — could not name themselves.

Separately, six latches sit beside a tagged import on the path where the import
did not run or returned false: a bundle already marked incomplete short-circuits
the || before the import, and each catch latches directly. Those reported no
origin while their neighbour reported one.

* fix(provenance): stop a broad catch claiming an incomplete bundle

The catch around table-row provenance loading also covers a database failure in
loadTableRowSecretProvenance, which is not an incomplete bundle. Naming a reason
the catch cannot know is the misattribution this work exists to remove, so it
reports 'unspecified' with its origin, matching every sibling catch. The decrypt
catch keeps its specific reason because its try wraps only the decrypt call.
`<EnvScript>` defaults to Next's `<Script strategy='beforeInteractive'>`, which
does not assign `window.__ENV` — it pushes the assignment onto `self.__next_s`.
That queue has one consumer, `appBootstrap`, which reads it once and
short-circuits to `hydrate()` when empty. The bootstrap chunk's `<script async>`
tag sits ~13KB earlier in the document than the env tag, so when that chunk runs
first the queue drains empty, nothing drains it again, and `window.__ENV` stays
undefined for the life of the document — every `getEnv` read empty until a
reload wins the race.

`disableNextScript` emits a plain inline `<script>` that assigns
unconditionally, so a lost race costs a few milliseconds instead of the session.

Also records whether the assignment was still missing at module-init so the
residual (module-scope reads in `env-flags`, which freeze what they see) is
measured rather than assumed.
…ce (#6497)

The agent's stored-memory read was the only durable-provenance check site
with no test of its enforced path, and the only one whose control flow was
restructured by hand. Pin both directions against the shape that failed in
production: an unrecorded memory reads through and reports, and the same
memory refuses once the memory surface is closed.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@waleedlatif1
waleedlatif1 merged commit ccdb03d into main Aug 10, 2026
50 checks passed
@icecrasher321 icecrasher321 changed the title v0.7.67: provenance ffs, files fixes, library post v0.7.67: provenance ffs, files, landing fixes, library post Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants