chrismdp / systems / factory

The AWML factory

System · Public ·
Version 4 of 4
  1. #4 · chrismdp · ShowingLatest
  2. #3 · chrismdp ·
  3. #2 · chrismdp ·
  4. #1 · chrismdp ·

How an issue on chrismdp/awml becomes a merged pull request. A maintainer labels an issue build, and Claude drafts the change on a branch of its own. CI checks every commit as pushed: the tests, a bug review and a security review run side by side, and on a factory branch a classifier weighs the change's risk once both reviews pass. A failed review is fixed by another session, which adds a commit. Once CI has run, a rule merges a straightforward change or asks for review. A failed try starts the build again, up to three times, and a pull request that conflicts with main is rebased.

AWML checks each workflow you can see in this system, given together with the others at their latest versions, so a copy of a part that disagrees with the part it refers to is found. Here is each check it ran on each workflow, in the order its spec gives them.

chrismdp/issue-to-pull-request.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-readers1 warning

    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.

    Warnings don't fail the check.

    • connector "token" is read by chrismdp/issue-to-pull-request.yaml, chrismdp/ci-a-commit.yaml, chrismdp/land-a-pull-request.yaml, chrismdp/fix-review-findings.yaml, chrismdp/retry-a-build.yaml and chrismdp/rebase-conflicting-pull-requests.yaml: each may take an item another expects
  • 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.

chrismdp/ci-a-commit.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.

chrismdp/land-a-pull-request.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.

chrismdp/fix-review-findings.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.

chrismdp/retry-a-build.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.

chrismdp/rebase-conflicting-pull-requests.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.