"docs: correct wiki doc behavior on queue env
Signed-off-by: AlexTranAmz <167144297+AlexTranAmz@users.noreply.github.com>"
"fix: do not cap <IntRangeExpr> expansion at the list-form limit
Signed-off-by: David Leong <leongdl@amazon.com>"
"fix: Make WRAP_ACTIONS fixtures cross-platform via python; include variables: in WrappedAction.Environment
Remove the runOn: [posix] gate from seven WRAP_ACTIONS job fixtures and
switch them — plus the two ungated env_template validation fixtures —
from bash/echo to python one-liners, the suite's portable interpreter
(the convention every other ungated fixture in the conformance suite
already follows — plain `echo` and `bash` are not reliably on PATH for
Windows test runners). The WRAP_ACTIONS README's platform note now
documents that convention: gated fixtures use POSIX shell, ungated
fixtures use python.
Clarify WrappedAction.Environment to carry ALL session-defined
variables: `openjd_env` exports and entered environments' declarative
`variables:` maps, both of which the runtime applies to the real
subprocess environment. A wrap script forwarding the session's
variables into a container must see everything the wrapped process
would have received, however it was declared; splitting the two
mechanisms made reusable wrappers silently drop `variables:`-declared
values. Update RFC 0008, the 2023-09 Template Schemas wiki, and rename
the pinning fixture wrap-environment-excludes-variables-map →
wrap-environment-includes-variables-map with inverted assertions.
Signed-off-by: Mark <399551+mwiebe@users.noreply.github.com>"
"test: Add 13 WRAP_ACTIONS conformance fixtures from the coverage audit (#153)
* test: Add 13 WRAP_ACTIONS conformance fixtures
Close the conformance coverage gaps identified by the RFC 0008 deep
review and element-by-element coverage audit. Every High-severity
divergence found across the review's five passes lived on a spec-mandated
path that no fixture exercised; each new fixture pins one of those
normative statements so cross-runtime divergences surface in CI instead
of in review probes.
Run-time cancelation validation (Template Schemas 5.3, "the runtime MUST
fail the action" — previously zero fixtures; each derives its invalid
value from WrappedAction.*, seeded per-action at host evaluation time,
so the value is unknowable statically or at job creation and cannot be
constant-folded away by an eager validator):
- wrap-cancelation-mode-resolves-invalid-fails
- wrap-cancelation-terminate-with-period-fails
- wrap-cancelation-period-over-cap-fails
Instantiation-time forwarding deferral (round-trip forwarding with the
wrap env in jobEnvironments; every existing round-trip fixture used
external env templates and never passed through job creation):
- wrap-cancelation-roundtrip-job-environment
Environment-template scope carried to wrap hooks (parameters and lets
resolve in hooks; the wrapped step's symtab cannot supply them):
- wrap-env-template-parameters-in-hooks
- wrap-env-let-bindings-in-hooks
WrappedAction.Environment is openjd_env-only (4.3.1; declarative
variables: map excluded):
- wrap-environment-excludes-variables-map
Session-level single-layer rule (two wrap envs as SEPARATE environment
templates — no single template is invalid, so only the runner can
reject; the existing fixture stacks both inside one job template):
- wrap-two-wrap-env-templates-rejected
Cleanup guarantee and failure semantics (RFC scenario table, previously
zero fixtures; now expressible with the runner's taskFailure assertion):
- wrap-failed-enter-still-runs-wrap-exit
Interception edge (nothing to replace means the hook must not fire):
- wrap-inner-env-without-on-exit-skips-exit-hook
Macro propagation beyond openjd_env (wrapped process's openjd_fail
recognized through the wrap script's forwarded stdout):
- wrap-openjd-fail-from-wrapped-process
Variable-scope rule beyond action args (env-side validation fixtures):
- 4--wrappedaction-in-cancelation-outside-hook.invalid
- 4--wrappedaction-in-embedded-file.invalid
Suite grows 59 -> 72. Current implementation status (expected, matches
the audit's open findings): openjd-rs with OpenJobDescription/openjd-rs
PR 265 passes 69/72 (fails lets-in-hooks, variables-map exclusion,
cleanup guarantee = audit F12/F9/F15); openjd-sessions-for-python's RFC
0008 branch passes 68/72 (fails the three runtime cancelation-validation
fixtures and the jobEnvironments round-trip = audit F5/F2). The
conformance CI workflows tolerate implementation failures by design.
Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>
* docs: State the wrap-hook nothing-to-replace rule explicitly
Review feedback on the wrap-inner-env-without-on-exit-skips-exit-hook
fixture: the behavior it pins — a wrap hook runs only in place of an
action the inner entity actually defines, so an inner environment with
no onExit (or no script at all) gets no onWrapEnvExit — was implicit in
the spec's "runs instead of" phrasing rather than stated.
Make it explicit in both places implementers read:
- Template Schemas: new WRAP_ACTIONS constraint 5 (nothing-to-replace
rule), including the variables:-only environment case and the note
that onWrapTaskRun always runs because every <StepScript> defines
onRun.
- How-Jobs-Are-Run: one sentence in the wrap interception paragraph.
- The fixture's header comment now cites the new constraint instead of
deriving the behavior.
The RFC document is left unchanged as the historical design record; the
wiki pages are the living specification. Conformance suite re-run:
matrix unchanged (the edited fixture passes on both implementations).
Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>
* docs: State the nothing-to-replace rule in RFC 0008 as well
Follow-up to the previous commit, which made the rule explicit in the
wiki pages: mirror it in the RFC document itself so all three spec
sources agree.
- "Wrap ordering with multiple environments" gains a normative
Nothing-to-replace rule paragraph (MUST NOT run a hook when the inner
environment defines no matching action or no script at all), with the
rationale that a hook is a replacement rather than a lifecycle
notification, and the note that onWrapTaskRun always runs because
every <StepScript> defines onRun.
- The "Modifications to How Jobs Are Run" diff block is updated to
match the sentence now present in the actual How-Jobs-Are-Run page,
keeping the RFC's quoted diff in sync with the published text.
Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>
---------
Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>"
"feat: Finalize RFC 0008 wrap-hook spec and nullable variable types
Resolve review feedback deferred at RFC 0008 merge time, on PR #148,
and on openjd-rs PR #261.
- Make the wiki authoritative: copy RFC 0008 normative content (the
WrappedAction/WrappedEnv/WrappedStep variable tables, timeout and
cancelation semantics, failure and cleanup guarantees, and stdout
macro rules) into 2023-09-Template-Schemas and How-Jobs-Are-Run,
linking the RFC for attribution only.
- Add WrappedAction.Cancelation.NotifyPeriodInSeconds (int?) so wrap
scripts can honor the wrapped action's full cancelation semantics.
- Retype WrappedAction.Timeout as int? and Cancelation.Mode as string?
— null when the wrapped action declares no timeout or <Cancelation>,
following EXPR semantics for optional data instead of 0/empty-string
sentinels. Breaking change to the Timeout contract introduced
earlier on this branch; both runtimes update in lockstep.
- Specify round-trip forwarding under FEATURE_BUNDLE_1: a wrap hook
can adopt the wrapped action's timeout and cancelation via
whole-field format strings. Declared values forward verbatim; null
drops the field (for mode, the entire cancelation object, since mode
is the required discriminator). A format-string mode otherwise
behaves like any normal format string: partial interpolation is
valid, and the resolved value must be a valid mode name at run time.
- Fix the RFC Basic Example (format-string timeouts require
FEATURE_BUNDLE_1 and 0 is out of range), correct the WRAP_ACTIONS
README timeout-sentinel bullet, and add EXPR to
wrap-partial-hooks-rejected so the missing-EXPR rule cannot mask the
all-or-nothing defect it tests.
- Conformance: add fixtures covering cancelation mode and
notify-period injection, schema-default forwarding, null sentinels
with observable coalescing assertions, the round-trip cases,
partial-interpolation mode, and invalid fixtures pinning the
FEATURE_BUNDLE_1 gating. Round-trip and null-sentinel fixtures pin
target behavior for openjd-rs 30cdf37, openjd-model-for-python
71fd0d3, and openjd-sessions-for-python 0295e21.
Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>"
"fix(spec): allow Task.File.* in <StepScript>.let, matching Env.File.* in environments
The Let Binding Scope Summary granted Env.File.* to <EnvironmentScript>.let
but omitted Task.File.* from <StepScript>.let. The rationale for the Env
case — embedded file paths are determined before let evaluation — applies
identically to step scripts, and implementations already validate and
evaluate Task.File.* in step-script let bindings
(OpenJobDescription/openjd-rs#260).
- Add Task.File.* to the <StepScript>.let scope row and generalize the
embedded-file note to cover both contexts (2023-09 Template Schemas 3.6.2)
- Align RFC 0005's ScriptTemplate let description, which granted embedded
file symbols to environment scripts via example but never stated the
step-script side
- Exercise Task.File.* in the 3.6 let-host-context-symbols validation
fixture (its header comment already claimed this coverage) and add a
7.3 runtime test mirroring the existing Env.File one
Signed-off-by: Mark <399551+mwiebe@users.noreply.github.com>"
"test: add conformance tests for environment template validation
Environment templates share the format-string, EXPR, and
FEATURE_BUNDLE_1 rules with job templates, but the suite had no
coverage for them; implementations could skip those passes for
environment templates entirely and still pass.
- base/env_templates: undefined variable references in actions,
variables, and embedded files must be rejected; Session.* and
Env.File.* references are valid; Job.Name, let bindings, and
complex expressions require EXPR.
- EXPR/env_templates (new): let bindings valid/duplicate/undefined,
complex expressions, Job.Name available, Step.Name not available,
type errors caught at validation time.
- FEATURE_BUNDLE_1/env_templates (new): endOfLine on embedded files
requires the extension.
- EXPR/job_templates: environment script let bindings and complex
expressions in job/step environments require EXPR (previously
only step-level let was covered).
Also cover the @fmtstring stage rule (spec 7.4) for timeout and
notifyPeriodInSeconds: they resolve at job creation, before any
session exists, so Session.*, Env.File.*, and host functions like
apply_path_mapping must be rejected in them even though the same
references are valid in the surrounding action's command/args
(@fmtstring[host]). Covered for step actions, environment actions
in job templates, and environment templates.
Signed-off-by: Mark <399551+mwiebe@users.noreply.github.com>"
"rfc: Environment Wrap Actions (#130)
* feat(RFC): Environment Wrap Actions
Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>"
"fix: mark userInterface control as @optional, add conformance tests (#129)
* Mark userInterface control as @optional, add conformance tests
Signed-off-by: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com>"
"fix: specify that amount and attribute names must be unique (#110)
Signed-off-by: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com>"
"chore: Apply recent feedback bumping job param count to 200, add RFC 4 accepted date
Signed-off-by: Mark <399551+mwiebe@users.noreply.github.com>"
"feat(rfc): Write RFC 004 to propose a grab bag of extensions (#95)
Signed-off-by: Cody Edwards <edwards@amazon.com>"
"docs: Clarify a few details of task chunking
Signed-off-by: cherie-chen <58997764+Cherie-Chen@users.noreply.github.com>"
"docs: REDACTED_ENV_VARS should be in the extensions list
Signed-off-by: Mark Wiebe <399551+mwiebe@users.noreply.github.com>"
feat: Merge RFC 0003 into the 2023-09 template schema wiki
Signed-off-by: Brian Axelson <86568017+baxeaz@users.noreply.github.com>
docs: Clarify a few details of task chunking (#73)
* In a step parameter space, only one task parameter can be chunked.
This was explained in the RFC rationale, but not made explicit in the
specification language.
* The minimum value of defaultTaskCount is 1.
* The minimum value of targetRuntimeSeconds is 0, and the value 0 is
equivalent to not specifying a value.
Signed-off-by: Mark Wiebe <399551+mwiebe@users.noreply.github.com>
fix!: amend default timeout for environment exit actions (#72)
Signed-off-by: Josh Usiskin <56369778+jusiskin@users.noreply.github.com>
feat: Merge RFC 0001 into the 2023-09 template schema wiki (#65)
Signed-off-by: Mark Wiebe <399551+mwiebe@users.noreply.github.com>
feat: Merge RFC 0002 into the 2023-09 template schema wiki (#64)
Signed-off-by: Mark Wiebe <399551+mwiebe@users.noreply.github.com>
fix: Fixed a format string value reference table entry refering to 'Attachments' instead of 'Embedded Files' (#61)
Signed-off-by: Evan Spearman <evans@amazon.com>
feat(wiki): disambiguate amount.worker.gpu.memory for multi-GPU hosts (#51)
Signed-off-by: Josh Usiskin <56369778+jusiskin@users.noreply.github.com>
fix: remove colon from filename (#26)
A file has a colon in a filename. This makes it impossible to checkout
this repository on windows systems. So, we remove the colon.
Signed-off-by: Daniel Neilson <53624638+ddneilson@users.noreply.github.com>