Skip to content

feat(agent): tool plugins and effects integration - #7

Draft
fffonion wants to merge 20 commits into
masterfrom
feat/tool-plugin-effects-draft
Draft

fffonion wants to merge 20 commits into
masterfrom
feat/tool-plugin-effects-draft

Conversation

@fffonion

@fffonion fffonion commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Scope

Draft implementation of RSS plugin graphs and Native tool/effect virtualization. This update closes the local first-A slice: one trusted stateless ToolOnly tool linked to one pure leaf library, using the existing read_file authorization, library transformation, and managed commit path.

  • Capture and validate the full immutable graph lock, package closure, exports and code identity before admission; keep existing A/B run pinning and strict replay identities.
  • Retain the original persistence owner and cancellation/deadline for Native execution and managed replay. Re-read the exact graph authorization at execution boundaries; do not cache positive authority.
  • Keep historical receipt queries separate from executable restoration. Revocation or missing/substituted packages do not rewrite history or authorize a new execution.
  • Cache only immutable bundled schema and builtin-source material, returning isolated owned values.
  • Preserve real Native prepare/commit, original grants, exact cancellation/error classification, one-effect completion, and cleanup boundaries.

Local validation

On the reviewed final code, with Rust 1.99.0, locked/offline dependencies, default test-harness concurrency, and unchanged feature/profile settings:

  • Library: 611 passed, 0 failed, 6 ignored (617 outer cases).
  • Six affected integration targets: 103 unique tests passed, 0 failed:
    • plugin_effect_api_e2e_tests: 12
    • plugin_graph_tests: 36
    • plugin_hot_reload_tests: 11
    • tools_pin_invoke_tracer: 17
    • tools_pin_production_ab: 10
    • tools_pinned_commit_outcome: 17
  • cargo fmt --all -- --check: passed.
  • cargo clippy --locked --all-features --all-targets -- -D warnings: passed without new suppressions.
  • plugin_schema_sync --check: passed.
  • Six focused cancellation/replay cases also passed; they are a subset of the library count, not additional unique tests.
  • Independent source review accepted the production integration and subsequent fixture/lint changes, including the final Luna review. Nonblocking setup-failure cleanup advisories remain recorded.

Four readonly replay fixtures establish their initial 10-second budget before their single admission. Their negative probes still close the same original root or wait for its actual original deadline, keeping the query cut and strict error/history assertions. The separate 2-second Native/child-clock cases, production defaults, and management budgets are unchanged.

The accepted stack was rebased onto current master, without a merge. Upstream added only LICENSE; all 481 pre-rebase paths were preserved exactly. Compared with the locally tested source, the additional plan-status edit is documentation-only; production, tests, RSS bodies and schemas are byte-identical.

Remaining boundary

This PR remains Draft and unmerged. The documentation-only follow-up documents the four existing, primary-only host plugin-control environment variables, with no Rust, test, or guard changes. The original documentation target reproduced the missing-doc failure (8 passed, 1 failed), then passed all 9 cases with both all features and default features; targeted Clippy also passed with warnings denied. Each gate compared all 482 frozen source paths byte-for-byte before and after execution; the other 481 paths are unchanged. Current-head CI 41698082251 passed the original documentation target (9/0) but failed gateway_tests (65 passed, 3 failed). Two terminal-recovery cases reported plugin_graph_pin_required; the read-only replay case returned 503 instead of 202. A single unchanged local execution reproduced the same three failures. Focused causal analysis is in progress; this full all-target gate remains unsuccessful, with no unchanged-head rerun. Prior run 41685803714 remains a historical documentation failure; it was not rerun on the unchanged head.

Formal T07 tool-to-tool calls, multi-library/all-tool T14 expansion, stateful children, and the new topology's complete checkpoint/restore and related remaining T15/T16 flows remain subsequent work. Existing typed unsupported boundaries are retained. No new OS isolation backend or arbitrary third-party process confinement is claimed.

Earlier failed candidates and CI runs remain historical evidence. This update does not relabel their causes or claim that unrelated historical lifecycle/PID timing failures have been solved.

@fffonion
fffonion added this pull request to stack #8 October 18, 2026 09:59
@fffonion
fffonion force-pushed the feat/tool-plugin-effects-draft branch from e001dd9 to bb0fcc6 Compare October 18, 2026 12:27
Base automatically changed from refactor/production-foundation-consolidated to master October 18, 2026 12:41
@fffonion
fffonion force-pushed the feat/tool-plugin-effects-draft branch from bb0fcc6 to c5a4da3 Compare October 18, 2026 12:41
Update rustscript-vm and pd-host-function to b5066dd92fcd7c07df57e3ec2c29dbcf8c19c390 so one CREATE TRIGGER is accepted through the production AgentRunner policy. Multi-statement SQL stays rejected.
Keep one validation, the original parser error, and the fault-only rejection log.
The helper is not a test. Its only caller is managed_authority_tests, included under the same workspace-io-fault cfg. Default unit builds otherwise reject the unused definition.
…9c390

The pin guard still required d9387f98 after the authorized SDK upgrade. Keep the full SHA, HTTPS remote, three lock sources, stale B1 rejection, and abbreviation checks, and reject the prior SDK explicitly.
Recheck the same RunCancellation after the crash seam and before the
external call. Keep the committed model.requested row and return the
existing typed cancel or deadline failure.
Include accepted graph management, retained invocation and effect boundaries,
managed checkpoint/branch runs, and manual workspace publication contracts.

Publish the exact accepted 385 snapshot with prior scope reviews and
17 final commands covering 126 unique target/test pairs. Versioned plugin
state, formal cross-package calls, and whole-plan acceptance remain pending.
Publish the exact accepted T12 snapshot with run, session and invocation
state, pure migration, exact checkpoint roots, Native ownership and bounded
worker-ordered collection. Scoped review and 18 final commands cover
213 unique target/test pairs. Full remote CI qualification remains pending.
Capture trusted stateless tool and pure library graphs, retain original run
authority for Native execution and replay, and keep historical receipts
separate from executable restoration. Cache only immutable schema and
builtin materials, with regression coverage for cancellation and revocation.
@fffonion
fffonion force-pushed the feat/tool-plugin-effects-draft branch from 7fca273 to 3aabb9b Compare November 3, 2026 17:35
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.

1 participant