Skip to content

Use saved state terminology across the repository - #923

Draft
taras wants to merge 2 commits into
mainfrom
agent/terminology-cleanup-current-main
Draft

taras wants to merge 2 commits into
mainfrom
agent/terminology-cleanup-current-main

Conversation

@taras

@taras taras commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Why

Use saved consistently for stored state throughout the repository, and prevent the previous wording from returning in prose. The cleanup includes source identifiers and filesystem paths as requested.

What changes

Before:

The old terminology appeared in documentation, exported types, internal identifiers, tests, filenames and repository directories.

After:

Those names use saved, all consumers and imports follow the new paths, and the shared banned-word list rejects the previous term through the existing prose checks. The only source occurrence is the ban entry itself.

This includes the filesystem recording code delivered by #902. The branch starts from main at 60715470, after that PR merged. The 460-file diff includes 12 renamed paths across two renamed directories.

Review guide

Start with: scripts/banned-words.js and its existing list-driven tests in scripts/tests/oxlint-policy.test.ts.

Then review:

  1. The renamed packages/durable-streams/saved.ts module and its exports/imports.
  2. The two saved-repository directories in Git, their test filenames and runtime exclusion references.
  3. Public type/member names and their updated consumers.
  4. test-weights.json: only renamed path keys change; timing values and provenance are identical.

What must stay true

  • Journal replay, filesystem behavior and resource ownership keep their existing semantics; the focused replay, recording and lifecycle tests cover them.
  • All matching tracked paths and source occurrences disappear except the explicit ban entry; case-insensitive content and path audits verify this.
  • The shared word list drives existing enforcement and its tests; no second checker or new enforcement scope is introduced.

How to verify it

  • Lint and typechecking pass.
  • The focused terminology, replay, saved-run, repository recording and lifecycle group passes: 18 tests / 153 steps.
  • Discovery, exclusions, weights, public entrypoint and loaded-copy checks pass: 17 tests / 55 steps.
  • The compiled build and JSR dry run pass.
  • Source and compiled REPL leave/reopen journeys pass against the updated paths: 2 tests / 2 steps.
deno task lint
deno task check
deno task test scripts/tests/oxlint-policy.test.ts packages/durable-streams/tests/saved.test.ts packages/durable-streams/tests/replay-guard.test.ts packages/durable-streams/tests/terminal-boundary.test.ts packages/workflow/tests/saved-run.test.ts packages/git/tests/saved-repository-records.test.ts packages/git/tests/saved-repository-local.test.ts packages/git/tests/saved-repository-lifecycle.test.ts packages/cli/tests/repl-repositories.test.ts
deno task test scripts/tests/test-file-discovery.test.ts scripts/tests/runtime-exclusions.test.ts scripts/tests/test-weights.test.ts packages/workflow/tests/public-entrypoint.test.ts packages/core/tests/loaded-copy-files.test.ts packages/core/tests/evaluate-loaded-copy.test.ts packages/workflow/tests/workspace-effect-loaded-copy.test.ts
deno task build
deno task test packages/cli/tests/repl-repositories-pty.test.ts scripts/tests/repl-repositories-compiled.test.ts
deno task check:jsr

Local subprocess checks use DENO_DIR=/Users/tarasmankovski/Library/Caches/deno so isolated HOME fixtures can resolve the prepared cache. Terminal journeys require tmux and local socket access; the first sandboxed source attempt could not reach its socket, and its output is preserved separately.

Scope

Included

  • Tracked prose, code identifiers, internal labels, tests and path references.
  • Matching filenames and directories, including both Git repository recording directories.
  • The shared banned-word list and existing enforcement coverage.

Intentionally unchanged

  • Dependency versions, lockfiles, measured test timings and provenance.

Generated or mechanical changes

  • Most changes are direct terminology replacements with corresponding import/path updates and formatting.
  • Vendored executable snapshots are byte-identical; their local provenance prose follows the requested terminology, and the two manifests record its updated checksums.
  • The Workspace fixture expects the renamed payload's 24-byte size, and site prose follows its own formatter.
  • The existing permission test waits for both participating turns to start before checking that the sibling remains live. This fixes 🐛 Flake: #870 U2 permission row intermittently misses the "build" Agent turn in the full repl gate #874.

Risks and limitations

  • Exported type/member names change. Downstream TypeScript consumers need the new names.
  • This is a source-tree cleanup. Git history, stored user data and other worktrees are preserved.
  • The original cleanup commit remains on agent/terminology-cleanup; this PR refreshes that work against the merged Resume REPL entries without repeating completed file operations #902 base.

CI correction verification

Revision b68c1096 corrects the site formatting, provenance checksums and fixture byte counts exposed by CI, and removes the existing #874 startup race in the permission test.

  • deno task test scripts/tests/cloudflare-dofs-vendor.test.ts scripts/tests/acpx-vendor.test.ts packages/workflow/tests/workspace-root.test.ts: 3 tests / 19 steps pass.
  • deno task test packages/cli/tests/repl-agent-interface.test.ts: 14 tests / 40 steps pass.
  • Site deno task check and deno task build: pass.
  • Root deno task lint and deno task check: pass.
  • Content and filename audits still find no old spelling outside its ban entry.

Scope confirmation

  • Every changed file supports the requested terminology cleanup.
  • Unrelated cleanup is excluded.
  • Mechanical changes are identified.
  • The description matches the diff and focused verification.

@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

PR #923: Use saved state terminology across the repository

462 files, +4938 / -5022

Scope

🔴 PR has 9960 lines changed. Split into focused PRs.

🟡 9960 lines changed. PRs under 400 receive more thorough review.

🟡 462 files changed. Are all changes related?

🟡 Changes span 35 directories.

🟡 PR mixes config and source changes.

Structural

🟡 Type declarations with no consumers: JournalAdmission, RootDocumentSource.
Symbol Declared at Refs in diff Why flagged
JournalAdmission packages/core/src/execute.ts:3006 1 referenced ≤1× within the added diff (pre-existing usages not counted)
RootDocumentSource packages/core/src/root-source.ts:55 1 referenced ≤1× within the added diff (pre-existing usages not counted)
🟡 Interface declarations with no consumers: Planned.
Symbol Declared at Refs in diff Why flagged
Planned packages/core/src/generated-xmd.ts:1453 1 referenced ≤1× within the added diff (pre-existing usages not counted)

Oxlint structural signals:

  • no-unused-vars ×122: packages/git/src/deno/composition/pull-request-reads.ts, packages/git/src/deno/composition/operations.ts, packages/acp/tests/fixtures/codex-native-launch-proof.ts (+35)
  • no-unnecessary-type-assertion ×56: packages/core/src/expand.ts, packages/runtime/deno-agent-session-coordinator.ts, packages/core/src/modifiers.ts (+11)
  • no-redundant-type-constituents ×11: packages/git/src/deno/composition/effects.ts, packages/git/src/deno/composition/object-source.ts, packages/git/src/deno/composition/operations.ts (+4)
  • no-empty-function ×9: packages/acp/src/adapter-snapshots.ts, packages/durable-streams/effect.ts, packages/core/src/invocation.ts (+4)
  • no-unnecessary-type-arguments ×3: packages/cli/src/repl/session.ts, packages/cli/src/repl/agent.ts
  • no-unnecessary-boolean-literal-compare ×2: packages/git/tests/support/issue-scenario.ts, packages/cli/src/workflow-bundle.ts

Slop

Oxlint slop signals:

  • no-console ×4: packages/cli/src/workflow-management.ts, packages/cli/src/cli.ts
  • no-inferrable-types ×3: packages/core/src/expand.ts, packages/workflow/src/deno/artifact/manifest.ts

Static Analysis

Oxlint: 546 diagnostics across 103 files (33 rules)
Density: 0.111 violations/added-line

no-unused-vars (122): packages/git/src/deno/composition/pull-request-reads.ts, packages/git/src/deno/composition/operations.ts, packages/acp/tests/fixtures/codex-native-launch-proof.ts (+35)
no-shadow (86): packages/git/src/composition/components/PullRequest.ts, packages/git/src/composition/components/GitCommit.ts, packages/git/src/composition/components/Repository.ts (+25)
no-unnecessary-type-assertion (56): packages/core/src/expand.ts, packages/runtime/deno-agent-session-coordinator.ts, packages/core/src/modifiers.ts (+11)
no-unsafe-type-assertion (40): packages/core/src/expand.ts, packages/core/src/modifiers.ts, packages/cli/src/plan-component.ts (+13)
no-array-sort (32): packages/git/src/deno/composition/operations.ts, packages/core/src/inspect.ts, packages/acp/src/native-launch.ts (+20)
unbound-method (27): packages/git/src/deno/composition/effects.ts, packages/core/src/agent/launch-coordinator.ts, packages/core/src/expand.ts (+13)
no-base-to-string (24): packages/core/src/expand.ts, packages/git/tests/support/issue-scenario.ts, packages/cli/src/plan-component.ts (+5)
no-floating-promises (24): packages/cli/src/repl/session.ts, packages/durable-streams/effect.ts, packages/git/tests/support/pull-request-crash-child.ts (+8)
consistent-return (23): packages/workflow/src/deno/artifact/records.ts, packages/cli/src/repl/source-reading.ts, packages/testing/src/execution-harness.ts (+12)
consistent-function-scoping (22): packages/acp/tests/fixtures/codex-native-launch-proof.ts, packages/git/tests/support/composition.ts, packages/durable-streams/effect.ts (+5)
no-useless-spread (11): packages/core/src/document-targets.ts, packages/git/src/issue/effect.ts, packages/acp/src/provider.ts (+5)
no-redundant-type-constituents (11): packages/git/src/deno/composition/effects.ts, packages/git/src/deno/composition/object-source.ts, packages/git/src/deno/composition/operations.ts (+4)
no-empty-function (9): packages/acp/src/adapter-snapshots.ts, packages/durable-streams/effect.ts, packages/core/src/invocation.ts (+4)
no-unnecessary-type-conversion (8): packages/cli/src/repl/model.ts, packages/core/src/eval-handler.ts, packages/core/tests/support/answer-provider.ts (+2)
no-control-regex (5): packages/acp/tests/fixtures/claude-native-launch-proof.ts, packages/acp/tests/fixtures/claude-native-to-acp-proof.ts, packages/acp/tests/fixtures/codex-native-launch-proof.ts (+1)
no-new-array (5): packages/core/src/definition.ts, packages/core/src/document-targets.ts
no-underscore-dangle (5): packages/core/src/eval-handler.ts, packages/core/src/expand.ts, packages/acp/src/checkpoint.ts
no-unnecessary-template-expression (5): packages/cli/src/workflow.ts, packages/acp/src/adapter-snapshots.ts, packages/cli/src/repl/model.ts (+2)
no-console (4): packages/cli/src/workflow-management.ts, packages/cli/src/cli.ts
no-misused-spread (4): packages/cli/src/repl/history-rail.ts, packages/cli/src/repl/application.ts, packages/core/src/inspect.ts
no-inferrable-types (3): packages/core/src/expand.ts, packages/workflow/src/deno/artifact/manifest.ts
no-unnecessary-type-arguments (3): packages/cli/src/repl/session.ts, packages/cli/src/repl/agent.ts
no-duplicate-type-constituents (3): packages/core/src/execute.ts, packages/cli/src/repl/application.ts
no-this-alias (2): packages/core/src/components/component-resolution.ts
no-useless-fallback-in-spread (2): packages/git/src/deno/composition/host.ts, packages/core/src/expand.ts
no-unnecessary-boolean-literal-compare (2): packages/git/tests/support/issue-scenario.ts, packages/cli/src/workflow-bundle.ts
no-unnecessary-type-parameters (2): packages/core/src/document-request.ts, packages/durable-streams/saved.ts
no-useless-escape (1): packages/acp/tests/fixtures/codex-native-launch-proof.ts
no-useless-constructor (1): packages/git/src/issue/errors.ts
no-unassigned-import (1): packages/cli/src/upgrade.ts
no-unmodified-loop-condition (1): packages/cli/src/cli.ts
restrict-template-expressions (1): packages/core/src/expand.ts
no-implied-eval (1): packages/core/src/expand.ts

Correctness

No extraneous code patterns detected.

This branch has not been deployed

No deployments
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.

🐛 Flake: #870 U2 permission row intermittently misses the "build" Agent turn in the full repl gate

1 participant