{
  "schema": "huanxi.upgrade-package.v1",
  "upgrade_kind": "runtime_only",
  "source_release": "0.8.13.30",
  "target_release": "0.8.13.31",
  "source_schema": "0.8.2-runtime-tables.83",
  "target_schema": "0.8.2-runtime-tables.83",
  "forward_sql": "forward.sql",
  "rollback_sql": "rollback.sql",
  "forward_sha256": "c254cefe208a74f1dbe32bbfd2bb8287332815a5ac026cd1181b2cb496dd2259",
  "rollback_sha256": "c254cefe208a74f1dbe32bbfd2bb8287332815a5ac026cd1181b2cb496dd2259",
  "rollback_mode": "logical",
  "service_stop_required": true,
  "database_backup_required": true,
  "preserve_tables": [
    "employees",
    "projects",
    "assignments",
    "assignment_results",
    "runtime_conversation_messages",
    "input_commands"
  ],
  "append_only_tables": [],
  "notes": "Runtime-only release hop 0.8.13.30 -> 0.8.13.31, schema unchanged at 0.8.2-runtime-tables.83. Rolls up the PRs landed on main after the v0.8.13.30 tag: first-class planning model kind for the plan phase (#951), entry-gate greeting/no-task default method for 岗位流程 templates (#966), external Browser Sandbox provider ppio/novita (#965), config-first browser block backend/sandbox_provider/service_url (#974), system-config-change skill for in-conversation huanxios.json edits (#975), failed-run context carried to next turn via tiered placeholder + on-demand trace (#977), STT short-lived public audio URL (#964), plus portal async-loading feedback (#970), thread-loading scope fix (#972) and image-attachment intent-neutral note (#973). Touches runtime .py, dashboard front-end and skills; no DDL. forward/rollback are an advisory lock plus a source-marker guard, identical bytes, rollback_mode=logical (marker never moves). Rollback is runtime-only: swap the retained previous runtime/manifest and restart. Database, configuration references, credentials and workspaces preserved."
}
