Skip to content

Latest commit

 

History

History
45 lines (37 loc) · 2.74 KB

File metadata and controls

45 lines (37 loc) · 2.74 KB

SampSharp downstream agent guidance

Working style

  • Make the smallest upstream-compatible change that satisfies a framework, native component, build, or release boundary. Never encode gamemode-specific behavior in this reusable fork.
  • Keep upstream fetch-only and never rewrite upstream history. A blocked submodule may be forked to a private SampStack repository only when a reusable native fix is required.
  • Keep durable rules here and live state in docs/AGENT-HANDOFF.md. Compaction is unannounced; refresh the handoff after decisions, before noisy work, and after material tests.

Work loop

  1. Read this file, docs/AGENT-HANDOFF.md, and the maintain-sampsharp skill. Inspect the main worktree, remotes, and recursive submodule state.
  2. Trace the owning managed library, native component, SDK, build, or release path. Treat gamemode failures as consumer evidence, not product-specific design requirements.
  3. Implement one coherent root fix. Preserve package IDs, public APIs, source provenance, and platform-neutral behavior unless the task explicitly changes them.
  4. Validate proportionally, then run the narrowest consuming gamemode scenario when compatibility is the boundary. Do not run the full managed suite for docs or workflow-only changes.
  5. Update the handoff; use a branch and pull request for future work; verify the merged revision on origin/main.

Supported delivery

  • Native open.mp components: Linux x64/arm64, Windows x64, and macOS x64/arm64.
  • Managed NuGet packages are architecture-neutral. Development packages use immutable 1.0.0-dev.<run>.<commit> versions; the mutable GitHub dev release points to the current set.
  • Prefer host-native builds for local development. Docker is not a native compatibility test.
  • Resolve nethost from the matching installed .NET host pack. Never link a committed binary built for another operating system or architecture.

Validation and publication

  • Native component logic: configure and build only the current host first.
  • Managed code: run the focused project tests; use ./build.sh libraries plus ./build.sh libraries test --no-build for framework-wide changes.
  • Platform/release changes: manually run release.yml for the exact pushed revision. Use build_only for artifact-only proof; no workflow runs on a branch push or merge.
  • The manual release workflow refreshes mutable dev by default. Immutable versions require an explicit three-part version and consumer validation. Set artifact_run_id to a successful prior run of the same workflow and commit to publish its retained artifacts without rebuilding.
  • Never publish an uncommitted tree, overwrite a stable package, push to upstream, or place tokens in source, build arguments, artifacts, or logs.