ONEScript v1.1.1
ONEScript v1.1.1
Same-version corrective replacement — 2026-07-29
The v1.1.1 asset has been replaced in place after the final workflow-guard and Dry Run corrections. The package keeps App ID LTRYTzJP and version 1.1.1.
Upgrade: update the existing application with
ONEScript-1.1.1-on-prem.opkin Configuration Center. Do not uninstall and reinstall the application as a recovery procedure.
Workflow guard and Dry Run
- Real transition parity: a real
taskPreActioncallback may provide the target status withoutold_value.changedFrom(...)andchangedFromTo(...)now use the authoritative pre-action current status only when that callback value is absent; an explicit callbackold_valuealways wins. - Immediate activation: creating, enabling, disabling, editing, deleting, publishing, or suspending a workflow rule completes only after the authoritative rule revision is persisted and rebuilt locally. The next workflow operation sees the new state; no cache wait, process restart, or reinstall is required.
- Correct scoped evaluation: missing Project or Issue Type fields in the callback are resolved from the trusted current work item before exact matching. A proven non-match is allowed; only an unresolved potentially applicable guard fails closed.
- Visible-key Dry Run:
taskPreActionDry Run keeps the raw JSON context, accepts a visibleissueKeysuch asMHCS-67, and resolves it with an exact trusted-team lookup. Internal Team UUID and Task UUID are not required. - No unapproved scenario form: the temporary semantic Dry Run form/source inference was removed. Synthetic transitions continue to use raw
changedFieldSnapshots.
Worklog capability
issue.worklogexposes registered, estimated, remaining, roll-up, variance, and progress aggregates intaskPreAction.hasSpent(),hasEstimate(), andisOverEstimate()support readable workflow rules without listing or summing worklog records at callback time.- Scripts that do not reference
issue.worklogadd no worklog request; matching worklog guards share one tenant-pinned aggregate read. - Dry Run and real workflow callbacks use the same strict loader. Missing, malformed, incomplete, negative, non-finite, or unavailable data is never converted to zero.
- Simple and summary detailed-record APIs remain explicit mode-specific surfaces; use the namespace matching the team's worklog configuration.
if (
issue.status.changedFromTo('进行中', '已完成') &&
!issue.worklog.hasSpent()
) {
api.reject('流转至已完成前,请先登记工时。')
}Retained reliability corrections
- The live issue-detail success envelope
{ result: "SUCCESS", data: ... }is validated and worklog aggregates are read fromdata. - Admin tokens are cached by installation instance plus tenant and refreshed once only after a definitive
401/NotActive; a generic404is not treated as an authentication signal. - Scope option search follows all cursor pages.
- Tenant storage scans use the SDK's built-in primary-key query contract rather than a synthetic
__key__index. - Typographic JavaScript quote delimiters produce an exact replacement diagnostic.
Verification
- Target-tenant acceptance: a zero-worklog
进行中 → 已完成operation is rejected with the script reason; an unrelated transition is allowed; a real visible-key Dry Run completes successfully. - Focused real-callback/Dry Run/worklog regression: 29/29 passed.
- Full backend: 1,308 passed, 0 failed, 1 expected skip.
- Full Web: 256/256 passed.
- Deployment-profile contracts: 10/10 passed.
- Both newly built packages passed manifest re-read, backend VM load, lifecycle export, and
Install. - Source commit:
51591e7e6deefa1871621abd0e529cb1fecd5359. - On-Premises package: 3,613,968 bytes.
- SHA-256:
7b2e36ac6686ed5b23e8c42ce8eec799a628e1dc34ac4c54d9e382d8f4627fce.