[Grid agent] Build authorized scripted prim objects with transactional cleanup #131

Closed
opened 2026-08-17 19:31:37 +00:00 by hugo · 1 comment
Owner

Objective

Implement the advanced authorized-only workflow that turns a structured build request into a bounded linked prim object with optional validated LSL, while preserving operator control and cleaning up partial construction.

Plan before mutation

  • Accept requests only from authorized IM or authenticated operator origins. The LLM must produce a versioned declarative build plan: primitive shapes, transforms, materials/colors/textures from already-owned assets, link relationships, names/descriptions, and optional script source.
  • Validate all numbers, UUIDs, permissions, prim count, dimensions, distance from agent, land build rights, link topology, script size, and total operation duration before sending any mutation. Reject NaN/infinity, cycles, out-of-region placement, arbitrary asset URLs, uploads, purchases, and parcel/estate changes.
  • Expose a dry-run summary and estimated resource use. Small plans may run under configured policy; larger plans require a bound, expiring operator approval. The model cannot approve its own plan.

Transactional execution

  • Execute via existing native object/inventory APIs with per-step correlation and timeouts. Confirm object updates rather than assuming sends succeeded.
  • Record created object IDs immediately. On failure/cancel/reconnect, stop new work and attempt bounded cleanup of only objects created by this transaction; report any orphan IDs prominently.
  • Set ownership/permissions deliberately. Do not transfer or deed the result unless a separately authorized explicit action and supported safe policy are defined.
  • Optional scripts must pass the same native LSL validation rules as script delivery. Never run arbitrary downloaded code or invoke external compilers.

Acceptance criteria

  • Fake-grid packet tests validate representative builds, linking, permissions, script insertion, dry-run, approval binding, progress, and final object identity.
  • Adversarial tests cover huge plans, bad geometry, cycles, unauthorized origins, prompt injection, stale approvals, permission denial, partial replies, disconnect, cancel, and cleanup failure.
  • Default limits are conservative and documented; no L$ spend or permanent unrelated deletion is possible.
  • The control plane/TUI can observe progress, cancel, approve/deny, and identify recoverable orphans.

Dependencies

Depends on LLM tools, policy/approvals, lifecycle, perception, LSL validation, control plane, and observability. Schedule after core social/operational behavior because it is an advanced feature.

## Objective Implement the advanced authorized-only workflow that turns a structured build request into a bounded linked prim object with optional validated LSL, while preserving operator control and cleaning up partial construction. ## Plan before mutation - Accept requests only from authorized IM or authenticated operator origins. The LLM must produce a versioned declarative build plan: primitive shapes, transforms, materials/colors/textures from already-owned assets, link relationships, names/descriptions, and optional script source. - Validate all numbers, UUIDs, permissions, prim count, dimensions, distance from agent, land build rights, link topology, script size, and total operation duration before sending any mutation. Reject NaN/infinity, cycles, out-of-region placement, arbitrary asset URLs, uploads, purchases, and parcel/estate changes. - Expose a dry-run summary and estimated resource use. Small plans may run under configured policy; larger plans require a bound, expiring operator approval. The model cannot approve its own plan. ## Transactional execution - Execute via existing native object/inventory APIs with per-step correlation and timeouts. Confirm object updates rather than assuming sends succeeded. - Record created object IDs immediately. On failure/cancel/reconnect, stop new work and attempt bounded cleanup of only objects created by this transaction; report any orphan IDs prominently. - Set ownership/permissions deliberately. Do not transfer or deed the result unless a separately authorized explicit action and supported safe policy are defined. - Optional scripts must pass the same native LSL validation rules as script delivery. Never run arbitrary downloaded code or invoke external compilers. ## Acceptance criteria - [ ] Fake-grid packet tests validate representative builds, linking, permissions, script insertion, dry-run, approval binding, progress, and final object identity. - [ ] Adversarial tests cover huge plans, bad geometry, cycles, unauthorized origins, prompt injection, stale approvals, permission denial, partial replies, disconnect, cancel, and cleanup failure. - [ ] Default limits are conservative and documented; no L$ spend or permanent unrelated deletion is possible. - [ ] The control plane/TUI can observe progress, cancel, approve/deny, and identify recoverable orphans. ## Dependencies Depends on LLM tools, policy/approvals, lifecycle, perception, LSL validation, control plane, and observability. Schedule after core social/operational behavior because it is an advanced feature.
hugo added this to the 14 - metacrate grid agent milestone 2026-08-17 19:31:37 +00:00
hugo added the enhancement label 2026-08-17 19:31:37 +00:00
Author
Owner

Implemented in commit 64edd8d. Added a versioned, strict declarative prim-build plan with conservative 16-prim limits, finite/bounded geometry and distance validation, topology/cycle checks, current-region parcel build-right checks, owned texture resolution, hardened native LSL validation, exact dry-run resource/duration estimates, and policy-bound approval above four prims. Added native live-grid execution for rez/update confirmation, names/descriptions, transforms, materials/colors/textures, restrictive permissions, linking, task-script insertion, per-step timeouts/correlation, cancellation, reverse transaction-owned cleanup, and recoverable orphan reporting. The control plane/TUI now exposes active build progress and orphan counts and routes cancellation; existing pending-approval controls provide approve/deny. Related fake-grid/adversarial tests cover representative linked scripted builds, unauthorized origins, dry-run, approval threshold, land denial, invalid/huge/cyclic/URL plans, cancellation, partial replies/timeouts, reverse cleanup, cleanup failure, progress, and final UUID identity. Verified focused build/policy/control/TUI/dependency tests, live-grid compile, rustdoc, and clippy -D warnings. The dependency namespace gate is green: all new code is metacrate-grid-agent/metacrate, and no libremetaverse facade references MetaCrate crates.

Implemented in commit 64edd8d. Added a versioned, strict declarative prim-build plan with conservative 16-prim limits, finite/bounded geometry and distance validation, topology/cycle checks, current-region parcel build-right checks, owned texture resolution, hardened native LSL validation, exact dry-run resource/duration estimates, and policy-bound approval above four prims. Added native live-grid execution for rez/update confirmation, names/descriptions, transforms, materials/colors/textures, restrictive permissions, linking, task-script insertion, per-step timeouts/correlation, cancellation, reverse transaction-owned cleanup, and recoverable orphan reporting. The control plane/TUI now exposes active build progress and orphan counts and routes cancellation; existing pending-approval controls provide approve/deny. Related fake-grid/adversarial tests cover representative linked scripted builds, unauthorized origins, dry-run, approval threshold, land denial, invalid/huge/cyclic/URL plans, cancellation, partial replies/timeouts, reverse cleanup, cleanup failure, progress, and final UUID identity. Verified focused build/policy/control/TUI/dependency tests, live-grid compile, rustdoc, and clippy -D warnings. The dependency namespace gate is green: all new code is metacrate-grid-agent/metacrate, and no libremetaverse facade references MetaCrate crates.
hugo closed this issue 2026-08-18 09:33:10 +00:00
Sign in to join this conversation.