chrismdp / counting-house-exceptions

Fernwick Air: the exception queue

Public · Version 1 of 1
Fork

AWML checked this file when it was pushed, and the registry refuses a push with any mistake. It is checked again here, by the AWML this registry runs. Here is each check it ran, in the order its spec gives them.

References

Checked against the latest version of each workflow you can see

workflow.yaml

Checked by AWML v0.8.0

  • The file is YAML file.yamlPassed

    Each file can be read, and holds a YAML mapping of fields.

  • The file is of the version this release reads file.versionPassed

    awml is "0.8". An older file is upgraded with awml convert.

  • Every field is known and none is missing fields.knownPassed

    Each file, scope, part, line, implementation, block and comment has the fields it needs and no others, and each list is a list of mappings.

  • Every kind is known kinds.knownPassed

    Each part and line has a kind the spec defines.

  • No id is used twice ids.uniquePassed

    Scope, part, block and comment ids are unique across the file.

  • Every id is well written ids.writtenPassed

    An id is letters, digits and underscores, starting with a letter, and a block's platform is a company id or owner/platforms/slug.

  • Every value that should be text is text values.textPassed

    Ids, labels, kinds and references are text, not something YAML read as true, false, a number or a date.

  • Every reference names something in the file references.knownPassed

    Each in, from and to, each part a block names and each part a comment ties names a scope, block or part the file has.

  • No scope or block is nested in itself nesting.acyclicPassed

    Following in from any scope or block never leads back to it.

  • A comment is linked only by tie lines comments.tie-onlyPassed

    A comment moves nothing, so only a tie, or a hidden line, may touch it.

  • Every tie has a comment at one end ties.commentPassed

    A tie links a comment to what it explains, so one of its ends is a comment.

  • No line goes into a trigger triggers.no-line-inPassed

    A trigger only starts its own workflow, so no line but a tie or a hidden one goes into it. A workflow starts another with an outside action whose ref names the other's trigger.

  • Every op is known and on a step ops.knownPassed

    An op is one of the operations the spec lists, on an ai, code or person step.

  • Only a do step leads to an outside action operations.only-do-actsPassed

    A step that leads to an outside action, straight or through a review or a standing approval, is a do step.

  • An answer or check step never writes to a context operations.answer-check-read-onlyPassed

    An answer step and a check step read contexts and speak on surfaces, but never write to a context.

  • Every outside action's label ends with its tier tiers.writtenPassed

    An outside action's label ends with Allow, Ask or Block after a colon.

  • Every tier agrees with what stands in front of it tiers.shapePassed

    An Ask action has a review, a standing approval or a person's own step on every way in, an Allow action has no review or standing approval in front of it, and only red lines lead to a Block action.

  • Every standing approval lists its actions on a surface approvals.listedPassed

    A standing approval leads to the surface where each action it covers is listed.

  • Every processing is well written processing.writtenPassed

    A scope's processing is any, none, or a map from company ids to any or a list of known operations.

  • An inner scope allows no more processing than its outer one processing.nestedPassed

    A scope inside another allows no company or operation that the outer scope doesn't.

  • Only a block takes a platform platform.blocks-onlyPassed

    platform belongs to a block of an implementation, never to a scope.

  • Every wait is a duration on a trigger wait.durationPassed

    wait is an ISO 8601 duration in weeks, days, hours, minutes or seconds, given only on a trigger.

  • Every at is a path on a context at.pathPassed

    at is a relative path of plain names, given only on a context.

  • Only a trigger, connector or context is marked untrusted untrusted.partsPassed

    untrusted is true or false, and is true only on a trigger, connector or context.

  • Only a code step cleans cleans.code-onlyPassed

    cleans is true or false, and is true only on a code step, since strangers' text can steer an AI step however it's written.

  • No untrusted text reaches an outside action unstopped untrusted.outsidePassed

    Text from a part marked untrusted reaches an outside action only past a review, a person's own step or a code step marked cleans, which stops it, or through a standing approval in front of the action, which accepts the risk. Workflows given together are followed through the parts they share and the workflows they start.

  • Every ref is well written refs.writtenPassed

    A ref is owner/slug#id for a published workflow, or a path to a file alongside, ending .yaml, then # and the part's id.

  • Only a context, connector, surface or outside action takes a ref refs.partsPassed

    Workflows share the contexts, connectors and surfaces both reach, and an outside action names the trigger of the workflow it starts. A trigger belongs to the workflow it starts, so it never refers.

  • No part is placed twice in an implementation placement.oncePassed

    Each part sits in at most one block of each implementation.

  • Every part that needs a block has one placement.completePassed

    Every part but a trigger or comment sits in a block of each implementation.

  • Every ref names a part of the workflow it refers to refs.knownPassed

    A ref to a workflow given with it names a part that workflow has. A ref to a workflow not given is left alone.

  • Every copy agrees with the part it refers to refs.agreePassed

    A context, connector or surface that refers to another workflow's has the same kind, label and at, and a scope with the same people and terms.

  • Every outside action's ref names a trigger refs.startsPassed

    An outside action that refers to a workflow given with it names that workflow's trigger, which it starts.

  • Every shared part has one owner refs.ownerPassed

    A ref names a part of another workflow, never its own, and following refs from any copy ends at the one that owns the part, rather than going round in a circle.

  • No do step is decided by AI warn.do-by-codePassed

    A do step should be code acting on what an earlier step decided; this warns and never fails.

  • Each do step makes one change warn.one-changePassed

    A do step should lead to one change, counting each outside action and surface and all contexts together as one; this warns and never fails.

  • The file holds one workflow warn.several-workflowsPassed

    A trigger's run is every part its start lines reach, and triggers whose runs share a part are one workflow, so triggers in more than one group mean the file should be split at its triggers; this warns and never fails.

  • Every part is linked to a trigger warn.unlinked-partPassed

    Following lines either way from the triggers, leaving out comments and their ties, reaches every part; this warns and never fails.

  • Every comment is tied to a part warn.untied-commentPassed

    A comment explains what it is tied to, so each has a tie; this warns and never fails.

  • Every step is started by a trigger warn.unstarted-stepPassed

    Each step, review and standing approval is in some trigger's run, the parts its start lines reach; this warns and never fails.

  • No context is written by more than one workflow warn.shared-writersPassed

    A context that workflows given together share is written by only one of them, since each may change what another relies on; this warns and never fails.

  • No connector is read by more than one workflow warn.shared-readersPassed

    A connector that workflows given together share brings items in for only one of them, since each may take an item another expects; this warns and never fails.

  • Every platform description value is of the right kind description.valuesSkipped

    platform is a mapping, off_for_up_to a duration, steps code or agent, agents and calls lists of company ids, and holds a list.

    Skipped because no file given is a platform description.

  • Every company id and path is well written description.idsSkipped

    A platform description's id is a company id or owner/platforms/slug, its company ids are lower-case letters, digits and hyphens, and what it holds are relative paths.

    Skipped because no file given is a platform description.

AWML's spec says what each check is for.