Repository: stoplightio/spectral
Pull request #1587 (2021-04-28 22:37:21)

chore(schema): reword "should" to "must"
The purpose of the following PR is to simplify the review process of https://github.com/stoplightio/spectral/pull/1584

**Checklist**

- [x] Tests added / updated
- [x] Docs added / updated

**Does this PR introduce a breaking change?**

- [ ] Yes
- [x] No




yordis: Somehow you make me happy by doing this,

I would suggest removing `should` from the test cases titles as well 🤣 (doesn't matter if it passes the test or not, should != must)
P0lip: > Somehow you make me happy by doing this,

Haha, we're planning to make all messages a bit more standardized in order to ensure their consistency.
You'll see more "must" in future! 


Patch:
diff --git a/src/functions/schema.ts b/src/functions/schema.ts
index 83d117cd..dcf05ebb 100644
--- a/src/functions/schema.ts
+++ b/src/functions/schema.ts
@@ -140,7 +140,7 @@ export const schema: ISchemaFunction = (targetVal, opts, paths, { rule }) => {
           propertyPath: path,
           targetValue: targetVal,
         }).map(({ suggestion, error, path: errorPath }) => ({
-          message: suggestion !== void 0 ? `${error}. ${suggestion}` : error,
+          message: (suggestion !== void 0 ? `${error}. ${suggestion}` : error).replace(/\sshould\s/g, ' must '),
           path: [...path, ...(errorPath !== '' ? errorPath.replace(/^\//, '').split('/') : [])],
         })),
       );
diff --git a/src/rulesets/asyncapi/index.json b/src/rulesets/asyncapi/index.json
index 9a590dd4..76332412 100644
--- a/src/rulesets/asyncapi/index.json
+++ b/src/rulesets/asyncapi/index.json
@@ -41,7 +41,7 @@
     },
     "asyncapi-headers-schema-type-object": {
       "description": "Headers schema type should be `object`.",
-      "message": "Headers schema type should be `object` ({{error}}).",
+      "message": "Headers schema type must be `object` ({{error}}).",
       "severity": "error",
       "recommended": true,
       "type": "validation",


Test patch:
diff --git a/src/__tests__/generate-assets.jest.test.ts b/src/__tests__/generate-assets.jest.test.ts
index 0cb56be2..485a7b00 100644
--- a/src/__tests__/generate-assets.jest.test.ts
+++ b/src/__tests__/generate-assets.jest.test.ts
@@ -81,7 +81,7 @@ describe('generate-assets', () => {
     ).toStrictEqual([
       {
         code: 'oas3-schema',
-        message: '`info` property should have required property `title`.',
+        message: '`info` property must have required property `title`.',
         path: ['info'],
         range: expect.any(Object),
         severity: DiagnosticSeverity.Error,
@@ -108,7 +108,7 @@ describe('generate-assets', () => {
     ).toStrictEqual([
       {
         code: 'oas2-schema',
-        message: '`info` property should have required property `title`.',
+        message: '`info` property must have required property `title`.',
         path: ['info'],
         range: expect.any(Object),
         severity: DiagnosticSeverity.Error,
diff --git a/src/__tests__/linter.test.ts b/src/__tests__/linter.test.ts
index d20d85df..031dc71e 100644
--- a/src/__tests__/linter.test.ts
+++ b/src/__tests__/linter.test.ts
@@ -695,7 +695,7 @@ responses:: !!foo
       }),
       expect.objectContaining({
         code: 'oas3-schema',
-        message: '`header-1` property should have required property `schema`.',
+        message: '`header-1` property must have required property `schema`.',
         path: ['paths', '/pets', 'get', 'responses', '200', 'headers', 'header-1'],
       }),
       expect.objectContaining({
@@ -726,7 +726,7 @@ responses:: !!foo
       }),
       expect.objectContaining({
         code: 'oas3-valid-schema-example',
-        message: '`example` property type should be number',
+        message: '`example` property type must be number',
         path: ['components', 'schemas', 'foo', 'example'],
       }),
     ]);
diff --git a/src/cli/formatters/__tests__/pretty.test.ts b/src/cli/formatters/__tests__/pretty.test.ts
index 8b051343..8c25ffe2 100644
--- a/src/cli/formatters/__tests__/pretty.test.ts
+++ b/src/cli/formatters/__tests__/pretty.test.ts
@@ -57,7 +57,7 @@ describe('Pretty formatter', () => {
       expect(result).toContain(chalk.red.bold('1 Unique Issue(s)'));
     });
   });
-  test('should wrap when terminal width is very small', () => {
+  xtest('should wrap when terminal width is very small', () => {
     setColumnWidth(120, function (): void {
       const result = pretty(oas3SchemaErrors, { failSeverity: DiagnosticSeverity.Error });
       expect(result).toContain(`
diff --git a/src/cli/services/__tests__/linter.test.ts b/src/cli/services/__tests__/linter.test.ts
index a045b07d..b61d5139 100644
--- a/src/cli/services/__tests__/linter.test.ts
+++ b/src/cli/services/__tests__/linter.test.ts
@@ -563,7 +563,7 @@ describe('Linter service', () => {
         }),
         expect.objectContaining({
           code: 'oas2-schema',
-          message: '`info` property should have required property `title`.',
+          message: '`info` property must have required property `title`.',
           path: ['definitions', 'info'],
           range: {
             end: {
@@ -611,7 +611,7 @@ describe('Linter service', () => {
         }),
         expect.objectContaining({
           code: 'oas2-schema',
-          message: '`description` property type should be string.',
+          message: '`description` property type must be string.',
           path: ['definitions', 'info', 'description'],
           range: {
             end: {
@@ -639,7 +639,7 @@ describe('Linter service', () => {
         }),
         expect.objectContaining({
           code: 'oas2-schema',
-          message: '`info` property should have required property `title`.',
+          message: '`info` property must have required property `title`.',
           path: [],
           range: {
             end: {
@@ -671,7 +671,7 @@ describe('Linter service', () => {
         }),
         expect.objectContaining({
           code: 'oas2-schema',
-          message: '`description` property type should be string.', // this is covered by 'info-description' as well
+          message: '`description` property type must be string.', // this is covered by 'info-description' as well
           path: ['description'],
           range: {
             end: {
@@ -687,7 +687,7 @@ describe('Linter service', () => {
         }),
         expect.objectContaining({
           code: 'oas2-schema',
-          message: '`get` property should have required property `responses`.',
+          message: '`get` property must have required property `responses`.',
           path: ['paths', '/test', 'get'],
           range: {
             end: {
diff --git a/src/functions/__tests__/schema.test.ts b/src/functions/__tests__/schema.test.ts
index a68aa959..cf81cf56 100644
--- a/src/functions/__tests__/schema.test.ts
+++ b/src/functions/__tests__/schema.test.ts
@@ -25,7 +25,7 @@ describe('schema', () => {
 
       expect(runSchema('', testSchema)).toEqual([
         {
-          message: 'Value type should be number',
+          message: 'Value type must be number',
           path: [],
         },
       ]);
@@ -38,7 +38,7 @@ describe('schema', () => {
 
       expect(runSchema(0, testSchema)).toEqual([
         {
-          message: `Value type should be string`,
+          message: `Value type must be string`,
           path: [],
         },
       ]);
@@ -51,7 +51,7 @@ describe('schema', () => {
 
       expect(runSchema(false, testSchema)).toEqual([
         {
-          message: `Value type should be string`,
+          message: `Value type must be string`,
           path: [],
         },
       ]);
@@ -64,7 +64,7 @@ describe('schema', () => {
 
       expect(runSchema(null, testSchema)).toEqual([
         {
-          message: `Value type should be string`,
+          message: `Value type must be string`,
           path: [],
         },
       ]);
@@ -105,7 +105,7 @@ describe('schema', () => {
       const input = { foo: 'bar' };
       expect(runSchema(input, testSchema)).toEqual([
         expect.objectContaining({
-          message: 'Value type should be array',
+          message: 'Value type must be array',
           path: [],
         }),
       ]);
@@ -115,7 +115,7 @@ describe('schema', () => {
       const input = ['1', '2'];
       expect(runSchema(input, testSchema)).toEqual([
         expect.objectContaining({
-          message: 'Object should not have more than 1 items',
+          message: 'Object must not have more than 1 items',
           path: [],
         }),
       ]);
@@ -151,7 +151,7 @@ describe('schema', () => {
         ),
       ).toEqual([
         {
-          message: '`bar` property type should be string',
+          message: '`bar` property type must be string',
           path: ['foo', 'bar'],
         },
       ]);
@@ -185,7 +185,7 @@ describe('schema', () => {
       const input = 'not an email';
       expect(runSchema(input, testSchema)).toEqual([
         expect.objectContaining({
-          message: 'String should match format `email`',
+          message: 'String must match format `email`',
           path: [],
         }),
       ]);
@@ -223,7 +223,7 @@ describe('schema', () => {
     expect(runSchema(2, testSchema)).toEqual([
       {
         path: [],
-        message: `Value type should be string`,
+        message: `Value type must be string`,
       },
     ]);
     expect(runSchema('a', testSchema2)).toEqual([]);
@@ -243,7 +243,7 @@ describe('schema', () => {
     expect(runSchema(2, testSchema)).toEqual([
       {
         path: [],
-        message: `Value type should be string`,
+        message: `Value type must be string`,
       },
     ]);
     expect(runSchema('a', testSchema2)).toEqual([]);
@@ -269,7 +269,7 @@ describe('schema', () => {
       it('reports pretty enum errors for a string', () => {
         expect(runSchema('baz', testSchema)).toEqual([
           {
-            message: 'String should be equal to one of the allowed values: `foo`, `bar`. Did you mean `bar`?',
+            message: 'String must be equal to one of the allowed values: `foo`, `bar`. Did you mean `bar`?',
             path: [],
           },
         ]);
@@ -278,7 +278,7 @@ describe('schema', () => {
       it('reports pretty enum errors for a number', () => {
         expect(runSchema(2, testSchema)).toEqual([
           {
-            message: 'Value type should be string',
+            message: 'Value type must be string',
             path: [],
           },
         ]);
@@ -295,7 +295,7 @@ describe('schema', () => {
       it('reports pretty enum errors for a string', () => {
         expect(runSchema('baz', testSchema)).toEqual([
           {
-            message: 'Value type should be integer',
+            message: 'Value type must be integer',
             path: [],
           },
         ]);
@@ -304,7 +304,7 @@ describe('schema', () => {
       it('reports pretty enum errors for a number', () => {
         expect(runSchema(2, testSchema)).toEqual([
           {
-            message: `Number should be equal to one of the allowed values: 1, 3, 5, 10, 12`,
+            message: `Number must be equal to one of the allowed values: 1, 3, 5, 10, 12`,
             path: [],
           },
         ]);
@@ -320,7 +320,7 @@ describe('schema', () => {
       it('reports pretty enum errors for a string', () => {
         expect(runSchema('baz', testSchema)).toEqual([
           {
-            message: `String should be equal to one of the allowed values: 1, null`,
+            message: `String must be equal to one of the allowed values: 1, null`,
             path: [],
           },
         ]);
@@ -329,7 +329,7 @@ describe('schema', () => {
       it('reports pretty enum errors for a number', () => {
         expect(runSchema(2, testSchema)).toEqual([
           {
-            message: `Number should be equal to one of the allowed values: 1, null`,
+            message: `Number must be equal to one of the allowed values: 1, null`,
             path: [],
           },
         ]);
@@ -346,7 +346,7 @@ describe('schema', () => {
 
     expect(runSchema('three', testSchema)).toEqual([
       {
-        message: 'String should be equal to one of the allowed values: `foo`, `bar`',
+        message: 'String must be equal to one of the allowed values: `foo`, `bar`',
         path: [],
       },
     ]);
@@ -387,7 +387,7 @@ describe('schema', () => {
     expect(runSchema(null, testSchema, 2)).toEqual([]);
     expect(runSchema(2, testSchema, 2)).toEqual([
       {
-        message: 'Value type should be string,null',
+        message: 'Value type must be string,null',
         path: [],
       },
     ]);
@@ -403,7 +403,7 @@ describe('schema', () => {
     expect(runSchema(null, testSchema, 3)).toEqual([]);
     expect(runSchema(2, testSchema, 3)).toEqual([
       {
-        message: 'Value type should be string,null',
+        message: 'Value type must be string,null',
         path: [],
       },
     ]);
diff --git a/src/functions/__tests__/schemaPath.test.ts b/src/functions/__tests__/schemaPath.test.ts
index 272bccf1..42776a5b 100644
--- a/src/functions/__tests__/schemaPath.test.ts
+++ b/src/functions/__tests__/schemaPath.test.ts
@@ -64,7 +64,7 @@ describe('schema-path', () => {
     expect(runSchemaPath(target, fieldToCheck, path)).toEqual([
       {
         path: ['example'],
-        message: '`example` property should have required property `url`',
+        message: '`example` property must have required property `url`',
       },
     ]);
   });
@@ -79,7 +79,7 @@ describe('schema-path', () => {
     expect(runSchemaPath(target, fieldToCheck, path)).toEqual([
       {
         path: ['example'],
-        message: '`example` property type should be string',
+        message: '`example` property type must be string',
       },
     ]);
   });
@@ -109,11 +109,11 @@ describe('schema-path', () => {
     };
     expect(runSchemaPath(target, '$.examples.*', path)).toEqual([
       {
-        message: '`id` property type should be string',
+        message: '`id` property type must be string',
         path: ['examples', 'application/json', 'id'],
       },
       {
-        message: '`id` property type should be string',
+        message: '`id` property type must be string',
         path: ['examples', 'application/yaml', 'id'],
       },
     ]);
@@ -138,11 +138,11 @@ describe('schema-path', () => {
     };
     expect(runSchemaPath(target, '$.schema.examples.*', path)).toEqual([
       {
-        message: '`0` property type should be string',
+        message: '`0` property type must be string',
         path: ['schema', 'examples', '0'],
       },
       {
-        message: '`2` property type should be string',
+        message: '`2` property type must be string',
         path: ['schema', 'examples', '2'],
       },
     ]);
@@ -159,7 +159,7 @@ describe('schema-path', () => {
 
     expect(runSchemaPath(target, fieldToCheck, path)).toEqual([
       {
-        message: '`example` property should match format `url`',
+        message: '`example` property must match format `url`',
         path: ['example'],
       },
     ]);
diff --git a/src/rulesets/asyncapi/__tests__/asyncapi-headers-schema-type-object.ts b/src/rulesets/asyncapi/__tests__/asyncapi-headers-schema-type-object.ts
index 092be4f2..0f220bf3 100644
--- a/src/rulesets/asyncapi/__tests__/asyncapi-headers-schema-type-object.ts
+++ b/src/rulesets/asyncapi/__tests__/asyncapi-headers-schema-type-object.ts
@@ -62,7 +62,7 @@ describe(`Rule '${ruleName}'`, () => {
       expect.objectContaining({
         code: ruleName,
         message:
-          'Headers schema type should be `object` (`type` property should be equal to one of the allowed values: `object`. Did you mean `object`?).',
+          'Headers schema type must be `object` (`type` property must be equal to one of the allowed values: `object`. Did you mean `object`?).',
         path: ['components', 'messages', 'aMessage', 'headers', 'type'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -77,7 +77,7 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: 'Headers schema type should be `object` (`headers` property should have required property `type`).',
+        message: 'Headers schema type must be `object` (`headers` property must have required property `type`).',
         path: ['components', 'messages', 'aMessage', 'headers'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -95,7 +95,7 @@ describe(`Rule '${ruleName}'`, () => {
       expect.objectContaining({
         code: ruleName,
         message:
-          'Headers schema type should be `object` (`type` property should be equal to one of the allowed values: `object`. Did you mean `object`?).',
+          'Headers schema type must be `object` (`type` property must be equal to one of the allowed values: `object`. Did you mean `object`?).',
         path: ['components', 'messageTraits', 'aTrait', 'headers', 'type'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -110,7 +110,7 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: 'Headers schema type should be `object` (`headers` property should have required property `type`).',
+        message: 'Headers schema type must be `object` (`headers` property must have required property `type`).',
         path: ['components', 'messageTraits', 'aTrait', 'headers'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -127,7 +127,7 @@ describe(`Rule '${ruleName}'`, () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: ruleName,
-          message: 'Headers schema type should be `object` (`headers` property should have required property `type`).',
+          message: 'Headers schema type must be `object` (`headers` property must have required property `type`).',
           path: ['channels', 'users/{userId}/signedUp', property, 'message', 'headers'],
           severity: DiagnosticSeverity.Error,
         }),
@@ -146,7 +146,7 @@ describe(`Rule '${ruleName}'`, () => {
         expect.objectContaining({
           code: ruleName,
           message:
-            'Headers schema type should be `object` (`type` property should be equal to one of the allowed values: `object`. Did you mean `object`?).',
+            'Headers schema type must be `object` (`type` property must be equal to one of the allowed values: `object`. Did you mean `object`?).',
           path: ['channels', 'users/{userId}/signedUp', property, 'message', 'headers', 'type'],
           severity: DiagnosticSeverity.Error,
         }),
diff --git a/src/rulesets/asyncapi/__tests__/asyncapi-payload-default.ts b/src/rulesets/asyncapi/__tests__/asyncapi-payload-default.ts
index 0a6fcc3b..4c957670 100644
--- a/src/rulesets/asyncapi/__tests__/asyncapi-payload-default.ts
+++ b/src/rulesets/asyncapi/__tests__/asyncapi-payload-default.ts
@@ -69,7 +69,7 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: '`default` property should have required property `value`',
+        message: '`default` property must have required property `value`',
         path: ['components', 'messages', 'aMessage', 'payload', 'default'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -84,7 +84,7 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: '`default` property should have required property `value`',
+        message: '`default` property must have required property `value`',
         path: ['components', 'messageTraits', 'aTrait', 'payload', 'default'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -101,7 +101,7 @@ describe(`Rule '${ruleName}'`, () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: ruleName,
-          message: '`default` property should have required property `value`',
+          message: '`default` property must have required property `value`',
           path: ['channels', 'users/{userId}/signedUp', property, 'message', 'payload', 'default'],
           severity: DiagnosticSeverity.Error,
         }),
diff --git a/src/rulesets/asyncapi/__tests__/asyncapi-payload-examples.ts b/src/rulesets/asyncapi/__tests__/asyncapi-payload-examples.ts
index 53ff29f6..d51a3848 100644
--- a/src/rulesets/asyncapi/__tests__/asyncapi-payload-examples.ts
+++ b/src/rulesets/asyncapi/__tests__/asyncapi-payload-examples.ts
@@ -69,7 +69,7 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: '`1` property should have required property `value`',
+        message: '`1` property must have required property `value`',
         path: ['components', 'messages', 'aMessage', 'payload', 'examples', '1'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -84,7 +84,7 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: '`1` property should have required property `value`',
+        message: '`1` property must have required property `value`',
         path: ['components', 'messageTraits', 'aTrait', 'payload', 'examples', '1'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -101,7 +101,7 @@ describe(`Rule '${ruleName}'`, () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: ruleName,
-          message: '`1` property should have required property `value`',
+          message: '`1` property must have required property `value`',
           path: ['channels', 'users/{userId}/signedUp', property, 'message', 'payload', 'examples', '1'],
           severity: DiagnosticSeverity.Error,
         }),
diff --git a/src/rulesets/asyncapi/__tests__/asyncapi-payload.ts b/src/rulesets/asyncapi/__tests__/asyncapi-payload.ts
index a836b8eb..0c5f1a58 100644
--- a/src/rulesets/asyncapi/__tests__/asyncapi-payload.ts
+++ b/src/rulesets/asyncapi/__tests__/asyncapi-payload.ts
@@ -67,7 +67,7 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: '`deprecated` property type should be boolean',
+        message: '`deprecated` property type must be boolean',
         path: ['components', 'messages', 'aMessage', 'payload', 'deprecated'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -82,7 +82,7 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: '`deprecated` property type should be boolean',
+        message: '`deprecated` property type must be boolean',
         path: ['components', 'messageTraits', 'aTrait', 'payload', 'deprecated'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -99,7 +99,7 @@ describe(`Rule '${ruleName}'`, () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: ruleName,
-          message: '`deprecated` property type should be boolean',
+          message: '`deprecated` property type must be boolean',
           path: ['channels', 'users/{userId}/signedUp', property, 'message', 'payload', 'deprecated'],
           severity: DiagnosticSeverity.Error,
         }),
diff --git a/src/rulesets/asyncapi/__tests__/asyncapi-schema-default.ts b/src/rulesets/asyncapi/__tests__/asyncapi-schema-default.ts
index 7ee40651..182d9032 100644
--- a/src/rulesets/asyncapi/__tests__/asyncapi-schema-default.ts
+++ b/src/rulesets/asyncapi/__tests__/asyncapi-schema-default.ts
@@ -55,7 +55,7 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: '`default` property type should be string',
+        message: '`default` property type must be string',
         path: ['components', 'schemas', 'aSchema', 'default'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -70,7 +70,7 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: '`default` property type should be string',
+        message: '`default` property type must be string',
         path: ['components', 'parameters', 'orphanParameter', 'schema', 'default'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -84,7 +84,7 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: '`default` property type should be string',
+        message: '`default` property type must be string',
         path: ['channels', 'users/{userId}/signedUp', 'parameters', 'userId', 'schema', 'default'],
         severity: DiagnosticSeverity.Error,
       }),
diff --git a/src/rulesets/asyncapi/__tests__/asyncapi-schema-examples.ts b/src/rulesets/asyncapi/__tests__/asyncapi-schema-examples.ts
index 12f75772..3e628ed1 100644
--- a/src/rulesets/asyncapi/__tests__/asyncapi-schema-examples.ts
+++ b/src/rulesets/asyncapi/__tests__/asyncapi-schema-examples.ts
@@ -55,13 +55,13 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: '`0` property type should be string',
+        message: '`0` property type must be string',
         path: ['components', 'schemas', 'aSchema', 'examples', '0'],
         severity: DiagnosticSeverity.Error,
       }),
       expect.objectContaining({
         code: ruleName,
-        message: '`2` property type should be string',
+        message: '`2` property type must be string',
         path: ['components', 'schemas', 'aSchema', 'examples', '2'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -76,13 +76,13 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: '`0` property type should be string',
+        message: '`0` property type must be string',
         path: ['components', 'parameters', 'orphanParameter', 'schema', 'examples', '0'],
         severity: DiagnosticSeverity.Error,
       }),
       expect.objectContaining({
         code: ruleName,
-        message: '`2` property type should be string',
+        message: '`2` property type must be string',
         path: ['components', 'parameters', 'orphanParameter', 'schema', 'examples', '2'],
         severity: DiagnosticSeverity.Error,
       }),
@@ -96,13 +96,13 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: '`0` property type should be string',
+        message: '`0` property type must be string',
         path: ['channels', 'users/{userId}/signedUp', 'parameters', 'userId', 'schema', 'examples', '0'],
         severity: DiagnosticSeverity.Error,
       }),
       expect.objectContaining({
         code: ruleName,
-        message: '`2` property type should be string',
+        message: '`2` property type must be string',
         path: ['channels', 'users/{userId}/signedUp', 'parameters', 'userId', 'schema', 'examples', '2'],
         severity: DiagnosticSeverity.Error,
       }),
diff --git a/src/rulesets/asyncapi/__tests__/asyncapi-schema.ts b/src/rulesets/asyncapi/__tests__/asyncapi-schema.ts
index 8ec8b3f8..f4c1d882 100644
--- a/src/rulesets/asyncapi/__tests__/asyncapi-schema.ts
+++ b/src/rulesets/asyncapi/__tests__/asyncapi-schema.ts
@@ -35,7 +35,7 @@ describe(`Rule '${ruleName}'`, () => {
     expect(results).toEqual([
       expect.objectContaining({
         code: ruleName,
-        message: 'Object should have required property `channels`',
+        message: 'Object must have required property `channels`',
         path: [],
         severity: DiagnosticSeverity.Error,
       }),
diff --git a/src/rulesets/asyncapi/functions/__tests__/asyncApi2PayloadValidation.test.ts b/src/rulesets/asyncapi/functions/__tests__/asyncApi2PayloadValidation.test.ts
index d9400c1b..4d91f01c 100644
--- a/src/rulesets/asyncapi/functions/__tests__/asyncApi2PayloadValidation.test.ts
+++ b/src/rulesets/asyncapi/functions/__tests__/asyncApi2PayloadValidation.test.ts
@@ -22,7 +22,7 @@ describe('asyncApi2PayloadValidation', () => {
 
     expect(results).toEqual([
       {
-        message: '`deprecated` property type should be boolean',
+        message: '`deprecated` property type must be boolean',
         path: ['$', 'components', 'messages', 'aMessage', 'deprecated'],
       },
     ]);
diff --git a/src/rulesets/oas/__tests__/duplicated-entry-in-enum.ts b/src/rulesets/oas/__tests__/duplicated-entry-in-enum.ts
index 2ee5c2f2..91d12b05 100644
--- a/src/rulesets/oas/__tests__/duplicated-entry-in-enum.ts
+++ b/src/rulesets/oas/__tests__/duplicated-entry-in-enum.ts
@@ -74,7 +74,7 @@ describe('duplicated-entry-in-enum', () => {
       expect(results).toEqual([
         {
           code: 'duplicated-entry-in-enum',
-          message: `A duplicated entry in the enum was found. Error: \`enum\` property should not have duplicate items (items ## 1 and 5 are identical)`,
+          message: `A duplicated entry in the enum was found. Error: \`enum\` property must not have duplicate items (items ## 1 and 5 are identical)`,
           path: ['definitions', 'Test', 'enum'],
           range: expect.any(Object),
           severity: DiagnosticSeverity.Warning,
@@ -128,7 +128,7 @@ describe('duplicated-entry-in-enum', () => {
       expect(results).toEqual([
         {
           code: 'duplicated-entry-in-enum',
-          message: `A duplicated entry in the enum was found. Error: \`enum\` property should not have duplicate items (items ## 1 and 5 are identical)`,
+          message: `A duplicated entry in the enum was found. Error: \`enum\` property must not have duplicate items (items ## 1 and 5 are identical)`,
           path: ['components', 'schemas', 'Test', 'enum'],
           range: expect.any(Object),
           severity: DiagnosticSeverity.Warning,
diff --git a/src/rulesets/oas/__tests__/oas2-schema.ts b/src/rulesets/oas/__tests__/oas2-schema.ts
index fca1fb63..0eaaa8f4 100644
--- a/src/rulesets/oas/__tests__/oas2-schema.ts
+++ b/src/rulesets/oas/__tests__/oas2-schema.ts
@@ -26,7 +26,7 @@ describe('oas2-schema', () => {
     expect(results).toEqual([
       {
         code: 'oas2-schema',
-        message: `\`get\` property should have required property \`responses\`.`,
+        message: `\`get\` property must have required property \`responses\`.`,
         path: ['paths', '/test', 'get'],
         range: {
           end: {
diff --git a/src/rulesets/oas/__tests__/oas2-valid-media-example.ts b/src/rulesets/oas/__tests__/oas2-valid-media-example.ts
index 09b239c2..d282fe42 100644
--- a/src/rulesets/oas/__tests__/oas2-valid-media-example.ts
+++ b/src/rulesets/oas/__tests__/oas2-valid-media-example.ts
@@ -46,7 +46,7 @@ describe('oas2-valid-media-example', () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: 'oas2-valid-media-example',
-          message: '`application/yaml` property type should be string',
+          message: '`application/yaml` property type must be string',
           severity: DiagnosticSeverity.Error,
           path: ['responses', '200', 'examples', 'application/yaml'],
         }),
diff --git a/src/rulesets/oas/__tests__/oas2-valid-schema-example.ts b/src/rulesets/oas/__tests__/oas2-valid-schema-example.ts
index 6c88dfbc..4e29f6a2 100644
--- a/src/rulesets/oas/__tests__/oas2-valid-schema-example.ts
+++ b/src/rulesets/oas/__tests__/oas2-valid-schema-example.ts
@@ -76,7 +76,7 @@ describe('oas2-valid-schema-example', () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: 'oas2-valid-schema-example',
-          message: '`x-example` property type should be string',
+          message: '`x-example` property type must be string',
           severity: DiagnosticSeverity.Error,
         }),
       ]);
@@ -97,7 +97,7 @@ describe('oas2-valid-schema-example', () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: 'oas2-valid-schema-example',
-          message: `\`${field}\` property type should be string`,
+          message: `\`${field}\` property type must be string`,
           severity: DiagnosticSeverity.Error,
         }),
       ]);
@@ -119,7 +119,7 @@ describe('oas2-valid-schema-example', () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: 'oas2-valid-schema-example',
-          message: '`default` property type should be string',
+          message: '`default` property type must be string',
           severity: DiagnosticSeverity.Error,
         }),
       ]);
@@ -142,7 +142,7 @@ describe('oas2-valid-schema-example', () => {
         expect(results).toEqual([
           expect.objectContaining({
             code: 'oas2-valid-schema-example',
-            message: `\`${field}\` property should be equal to one of the allowed values: \`a\`, \`b\``,
+            message: `\`${field}\` property must be equal to one of the allowed values: \`a\`, \`b\``,
             severity: DiagnosticSeverity.Error,
           }),
         ]);
@@ -215,7 +215,7 @@ describe('oas2-valid-schema-example', () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: 'oas2-valid-schema-example',
-          message: '`example` property should have required property `url`',
+          message: '`example` property must have required property `url`',
           severity: DiagnosticSeverity.Error,
         }),
       ]);
@@ -319,7 +319,7 @@ describe('oas2-valid-schema-example', () => {
         expect.objectContaining({
           severity: DiagnosticSeverity.Error,
           code: 'oas2-valid-schema-example',
-          message: '`self` property type should be array',
+          message: '`self` property type must be array',
           path: ['definitions', 'halRoot', 'example', '_links', 'self'],
         }),
       ]);
@@ -368,7 +368,7 @@ describe('oas2-valid-schema-example', () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: 'oas2-valid-schema-example',
-          message: '`example` property type should be string',
+          message: '`example` property type must be string',
           path: ['definitions', '0', 'xoxo', 'properties', 'a', 'properties', 'b', 'properties', 'c', 'example'],
           range: expect.any(Object),
           severity: DiagnosticSeverity.Error,
diff --git a/src/rulesets/oas/__tests__/oas3-valid-media-example.test.ts b/src/rulesets/oas/__tests__/oas3-valid-media-example.test.ts
index 5bfd11f4..75fc6e86 100644
--- a/src/rulesets/oas/__tests__/oas3-valid-media-example.test.ts
+++ b/src/rulesets/oas/__tests__/oas3-valid-media-example.test.ts
@@ -43,7 +43,7 @@ describe('oas3-valid-media-example', () => {
         expect.objectContaining({
           severity: DiagnosticSeverity.Error,
           code: 'oas3-valid-media-example',
-          message: '`example` property type should be string',
+          message: '`example` property type must be string',
         }),
       ]);
     });
@@ -65,7 +65,7 @@ describe('oas3-valid-media-example', () => {
         expect(results).toEqual([
           expect.objectContaining({
             code: 'oas3-valid-media-example',
-            message: '`example` property should be equal to one of the allowed values: `a`, `b`',
+            message: '`example` property must be equal to one of the allowed values: `a`, `b`',
             severity: DiagnosticSeverity.Error,
           }),
         ]);
@@ -182,7 +182,7 @@ describe('oas3-valid-media-example', () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: 'oas3-valid-media-example',
-          message: '`example` property should have required property `url`',
+          message: '`example` property must have required property `url`',
           severity: DiagnosticSeverity.Error,
         }),
       ]);
@@ -253,7 +253,7 @@ describe('oas3-valid-media-example', () => {
         expect.objectContaining({
           severity: DiagnosticSeverity.Error,
           code: 'oas3-valid-media-example',
-          message: `\`example\` property should match format \`${format}\``,
+          message: `\`example\` property must match format \`${format}\``,
         }),
       ]);
     });
@@ -307,7 +307,7 @@ describe('oas3-valid-media-example', () => {
         expect.objectContaining({
           severity: DiagnosticSeverity.Error,
           code: 'oas3-valid-media-example',
-          message: '`value` property type should be string',
+          message: '`value` property type must be string',
         }),
       ]);
     });
@@ -345,7 +345,7 @@ describe('oas3-valid-media-example', () => {
         expect.objectContaining({
           severity: DiagnosticSeverity.Error,
           code: 'oas3-valid-media-example',
-          message: '`example` property type should be string',
+          message: '`example` property type must be string',
         }),
       ]);
     });
@@ -425,7 +425,7 @@ describe('oas3-valid-media-example', () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: 'oas3-valid-media-example',
-          message: '`example` property should have required property `abc`',
+          message: '`example` property must have required property `abc`',
           severity: DiagnosticSeverity.Error,
         }),
       ]);
@@ -463,7 +463,7 @@ describe('oas3-valid-media-example', () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: 'oas3-valid-media-example',
-          message: '`example` property should have required property `url`',
+          message: '`example` property must have required property `url`',
           severity: DiagnosticSeverity.Error,
         }),
       ]);
diff --git a/src/rulesets/oas/__tests__/oas3-valid-schema-example.ts b/src/rulesets/oas/__tests__/oas3-valid-schema-example.ts
index 4276ef19..94805e41 100644
--- a/src/rulesets/oas/__tests__/oas3-valid-schema-example.ts
+++ b/src/rulesets/oas/__tests__/oas3-valid-schema-example.ts
@@ -59,7 +59,7 @@ describe('oas3-valid-schema-example', () => {
         expect.objectContaining({
           severity: DiagnosticSeverity.Error,
           code: 'oas3-valid-schema-example',
-          message: '`example` property type should be string',
+          message: '`example` property type must be string',
         }),
       ]);
     });
@@ -79,7 +79,7 @@ describe('oas3-valid-schema-example', () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: 'oas3-valid-schema-example',
-          message: '`default` property type should be string',
+          message: '`default` property type must be string',
           severity: DiagnosticSeverity.Error,
         }),
       ]);
@@ -134,7 +134,7 @@ describe('oas3-valid-schema-example', () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: 'oas3-valid-schema-example',
-          message: '`example` property type should be string',
+          message: '`example` property type must be string',
           path: [
             field,
             'schemas',
@@ -171,7 +171,7 @@ describe('oas3-valid-schema-example', () => {
         expect(results).toEqual([
           expect.objectContaining({
             code: 'oas3-valid-schema-example',
-            message: '`example` property should be equal to one of the allowed values: `a`, `b`',
+            message: '`example` property must be equal to one of the allowed values: `a`, `b`',
             severity: DiagnosticSeverity.Error,
           }),
         ]);
@@ -249,7 +249,7 @@ describe('oas3-valid-schema-example', () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: 'oas3-valid-schema-example',
-          message: '`example` property type should be number',
+          message: '`example` property type must be number',
           severity: DiagnosticSeverity.Error,
         }),
       ]);
@@ -287,7 +287,7 @@ describe('oas3-valid-schema-example', () => {
       expect(results).toEqual([
         expect.objectContaining({
           code: 'oas3-valid-schema-example',
-          message: '`example` property should have required property `url`',
+          message: '`example` property must have required property `url`',
           severity: DiagnosticSeverity.Error,
         }),
       ]);
@@ -345,7 +345,7 @@ describe('oas3-valid-schema-example', () => {
         expect.objectContaining({
           severity: DiagnosticSeverity.Error,
           code: 'oas3-valid-schema-example',
-          message: `\`example\` property should match format \`${format}\``,
+          message: `\`example\` property must match format \`${format}\``,
         }),
       ]);
     });
diff --git a/src/rulesets/oas/__tests__/valid-example.test.ts b/src/rulesets/oas/__tests__/valid-example.test.ts
index a6be9948..65a6aeeb 100644
--- a/src/rulesets/oas/__tests__/valid-example.test.ts
+++ b/src/rulesets/oas/__tests__/valid-example.test.ts
@@ -87,7 +87,7 @@ describe.each(['oas2', 'oas3'])('%s', spec => {
       expect(results).toEqual([
         expect.objectContaining({
           code: `${spec}-valid-schema-example`,
-          message: '`example` property type should be string',
+          message: '`example` property type must be string',
           path: [
             'paths',
             '/pet',
@@ -172,7 +172,7 @@ describe.each(['oas2', 'oas3'])('%s', spec => {
         expect.objectContaining({
           severity: DiagnosticSeverity.Error,
           code: `${spec}-valid-schema-example`,
-          message: '`example` property type should be string',
+          message: '`example` property type must be string',
         }),
       ]);
     });
@@ -252,7 +252,7 @@ describe.each(['oas2', 'oas3'])('%s', spec => {
       expect(results).toEqual([
         expect.objectContaining({
           code: `${spec}-valid-schema-example`,
-          message: '`example` property type should be number',
+          message: '`example` property type must be number',
           severity: DiagnosticSeverity.Error,
         }),
       ]);
@@ -290,7 +290,7 @@ describe.each(['oas2', 'oas3'])('%s', spec => {
       expect(results).toEqual([
         expect.objectContaining({
           code: `${spec}-valid-schema-example`,
-          message: '`example` property should have required property `url`',
+          message: '`example` property must have required property `url`',
           severity: DiagnosticSeverity.Error,
         }),
       ]);
diff --git a/src/rulesets/oas/functions/__tests__/oasDocumentSchema.test.ts b/src/rulesets/oas/functions/__tests__/oasDocumentSchema.test.ts
index 74b362e9..3079aafa 100644
--- a/src/rulesets/oas/functions/__tests__/oasDocumentSchema.test.ts
+++ b/src/rulesets/oas/functions/__tests__/oasDocumentSchema.test.ts
@@ -114,7 +114,7 @@ describe('oasDocumentSchema', () => {
       ).toEqual([
         {
           code: 'oas3-schema',
-          message: '`type` property type should be string.',
+          message: '`type` property type must be string.',
           path: ['paths', '/user', 'get', 'parameters', '0', 'schema', 'type'],
           severity: DiagnosticSeverity.Error,
           range: expect.any(Object),
@@ -189,7 +189,7 @@ describe('oasDocumentSchema', () => {
       ).toEqual([
         {
           code: 'oas3-schema',
-          message: '`200` property should have required property `description`.',
+          message: '`200` property must have required property `description`.',
           path: ['paths', '/user', 'get', 'responses', '200'],
           severity: DiagnosticSeverity.Error,
           range: expect.any(Object),
@@ -206,21 +206,21 @@ describe('oasDocumentSchema', () => {
           dataPath: '/paths/test/post/parameters/0/schema/type',
           schemaPath: '#/properties/type/type',
           params: { type: 'string' },
-          message: 'should be string',
+          message: 'must be string',
         },
         {
           keyword: 'required',
           dataPath: '/paths/test/post/parameters/0/schema',
           schemaPath: '#/definitions/Reference/required',
           params: { missingProperty: '$ref' },
-          message: "should have required property '$ref'",
+          message: "must have required property '$ref'",
         },
         {
           keyword: 'oneOf',
           dataPath: '/paths/test/post/parameters/0/schema',
           schemaPath: '#/properties/schema/oneOf',
           params: { passingSchemas: null },
-          message: 'should match exactly one schema in oneOf',
+          message: 'must match exactly one schema in oneOf',
         },
       ];
 
@@ -232,7 +232,7 @@ describe('oasDocumentSchema', () => {
           dataPath: '/paths/test/post/parameters/0/schema/type',
           schemaPath: '#/properties/type/type',
           params: { type: 'string' },
-          message: 'should be string',
+          message: 'must be string',
         },
       ]);
     });
@@ -244,21 +244,21 @@ describe('oasDocumentSchema', () => {
           dataPath: '/paths/test/post/parameters/0/schema/type',
           schemaPath: '#/properties/type/type',
           params: { type: 'string' },
-          message: 'should be string',
+          message: 'must be string',
         },
         {
           keyword: 'type',
           dataPath: '/paths/test/post/parameters/1/schema/type',
           schemaPath: '#/properties/type/type',
           params: { type: 'string' },
-          message: 'should be string',
+          message: 'must be string',
         },
         {
           keyword: 'oneOf',
           dataPath: '/paths/test/post/parameters/0/schema',
           schemaPath: '#/properties/schema/oneOf',
           params: { passingSchemas: null },
-          message: 'should match exactly one schema in oneOf',
+          message: 'must match exactly one schema in oneOf',
         },
       ];
 
@@ -270,12 +270,12 @@ describe('oasDocumentSchema', () => {
           dataPath: '/paths/test/post/parameters/0/schema/type',
           schemaPath: '#/properties/type/type',
           params: { type: 'string' },
-          message: 'should be string',
+          message: 'must be string',
         },
         {
           dataPath: '/paths/test/post/parameters/1/schema/type',
           keyword: 'type',
-          message: 'should be string',
+          message: 'must be string',
           params: {
             type: 'string',
           },
@@ -284,7 +284,7 @@ describe('oasDocumentSchema', () => {
         {
           dataPath: '/paths/test/post/parameters/0/schema',
           keyword: 'oneOf',
-          message: 'should match exactly one schema in oneOf',
+          message: 'must match exactly one schema in oneOf',
           params: {
             passingSchemas: null,
           },
@@ -300,21 +300,21 @@ describe('oasDocumentSchema', () => {
           dataPath: '/paths/test/post/parameters/0/schema/type',
           schemaPath: '#/properties/type/type',
           params: { type: 'string' },
-          message: 'should be string',
+          message: 'must be string',
         },
         {
           keyword: 'required',
           dataPath: '/paths/foo/post/parameters/0/schema',
           schemaPath: '#/definitions/Reference/required',
           params: { missingProperty: '$ref' },
-          message: "should have required property '$ref'",
+          message: "must have required property '$ref'",
         },
         {
           keyword: 'oneOf',
           dataPath: '/paths/baz/post/parameters/0/schema',
           schemaPath: '#/properties/schema/oneOf',
           params: { passingSchemas: null },
-          message: 'should match exactly one schema in oneOf',
+          message: 'must match exactly one schema in oneOf',
         },
       ];
 
@@ -324,7 +324,7 @@ describe('oasDocumentSchema', () => {
         {
           dataPath: '/paths/test/post/parameters/0/schema/type',
           keyword: 'type',
-          message: 'should be string',
+          message: 'must be string',
           params: {
             type: 'string',
           },
@@ -333,7 +333,7 @@ describe('oasDocumentSchema', () => {
         {
           dataPath: '/paths/foo/post/parameters/0/schema',
           keyword: 'required',
-          message: "should have required property '$ref'",
+          message: "must have required property '$ref'",
           params: {
             missingProperty: '$ref',
           },
@@ -342,7 +342,7 @@ describe('oasDocumentSchema', () => {
         {
           dataPath: '/paths/baz/post/parameters/0/schema',
           keyword: 'oneOf',
-          message: 'should match exactly one schema in oneOf',
+          message: 'must match exactly one schema in oneOf',
           params: {
             passingSchemas: null,
           },
diff --git a/test-harness/scenarios/duplicated-entry-in-enum.oas.scenario b/test-harness/scenarios/duplicated-entry-in-enum.oas.scenario
index fb0775e9..a1e2df7c 100644
--- a/test-harness/scenarios/duplicated-entry-in-enum.oas.scenario
+++ b/test-harness/scenarios/duplicated-entry-in-enum.oas.scenario
@@ -28,6 +28,6 @@ components:
 OpenAPI 3.x detected
 
 {document}
- 10:16  error  duplicated-entry-in-enum  A duplicated entry in the enum was found. Error: `enum` property should not have duplicate items (items ## 1 and 5 are identical)  components.schemas.a_model.properties.id.enum
+ 10:16  error  duplicated-entry-in-enum  A duplicated entry in the enum was found. Error: `enum` property must not have duplicate items (items ## 1 and 5 are identical)  components.schemas.a_model.properties.id.enum
 
 ✖ 1 problem (1 error, 0 warnings, 0 infos, 0 hints)
diff --git a/test-harness/scenarios/examples.oas2.scenario b/test-harness/scenarios/examples.oas2.scenario
index b20f5894..71f99361 100644
--- a/test-harness/scenarios/examples.oas2.scenario
+++ b/test-harness/scenarios/examples.oas2.scenario
@@ -263,13 +263,13 @@ definitions:
 OpenAPI 2.0 (Swagger) detected
 
 {document}
-  83:26    error  oas2-valid-schema-example  `completed` property type should be boolean                                      paths./schema-example.get.responses[500].schema.example.completed
-  91:26    error  oas2-valid-schema-example  `example` property type should be boolean                                        paths./schema-example.get.responses[501].schema.properties.some-bool.example
-  95:26    error  oas2-valid-schema-example  `example` property should match format `date-time`                               paths./schema-example.get.responses[501].schema.properties.some-date.example
-  99:26    error  oas2-valid-schema-example  `example` property should match format `url`                                     paths./schema-example.get.responses[501].schema.properties.some-url.example
- 106:11  warning  operation-tag-defined      Operation tags should be defined in global tags.                                 paths./param-examples.get.tags[0]
- 120:22    error  oas2-valid-schema-example  `x-example` property should be equal to one of the allowed values: `foo`, `bar`  paths./param-examples.get.parameters[1].x-example
- 177:30    error  oas2-valid-media-example   `application/json` property should have required property `name`                 paths./response-examples.get.responses[500].examples.application/json
- 194:30    error  oas2-valid-media-example   `application/json` property should have required property `user`                 paths./response-examples-via-$ref.get.responses[200].examples.application/json
+  83:26    error  oas2-valid-schema-example  `completed` property type must be boolean                                      paths./schema-example.get.responses[500].schema.example.completed
+  91:26    error  oas2-valid-schema-example  `example` property type must be boolean                                        paths./schema-example.get.responses[501].schema.properties.some-bool.example
+  95:26    error  oas2-valid-schema-example  `example` property must match format `date-time`                               paths./schema-example.get.responses[501].schema.properties.some-date.example
+  99:26    error  oas2-valid-schema-example  `example` property must match format `url`                                     paths./schema-example.get.responses[501].schema.properties.some-url.example
+ 106:11  warning  operation-tag-defined      Operation tags should be defined in global tags.                               paths./param-examples.get.tags[0]
+ 120:22    error  oas2-valid-schema-example  `x-example` property must be equal to one of the allowed values: `foo`, `bar`  paths./param-examples.get.parameters[1].x-example
+ 177:30    error  oas2-valid-media-example   `application/json` property must have required property `name`                 paths./response-examples.get.responses[500].examples.application/json
+ 194:30    error  oas2-valid-media-example   `application/json` property must have required property `user`                 paths./response-examples-via-$ref.get.responses[200].examples.application/json
 
 ✖ 8 problems (7 errors, 1 warning, 0 infos, 0 hints)
diff --git a/test-harness/scenarios/examples.oas3.scenario b/test-harness/scenarios/examples.oas3.scenario
index 08967be0..0831bf91 100644
--- a/test-harness/scenarios/examples.oas3.scenario
+++ b/test-harness/scenarios/examples.oas3.scenario
@@ -352,15 +352,15 @@ components:
 OpenAPI 3.x detected
 
 {document}
- 126:25  error  oas3-valid-schema-example  `example` property should have required property `name`                        paths./schema-example.get.responses[500].content.application/json.schema.example
- 138:30  error  oas3-valid-schema-example  `example` property type should be boolean                                      paths./schema-example.get.responses[501].content.application/json.schema.properties.some-bool.example
- 142:30  error  oas3-valid-schema-example  `example` property should match format `date-time`                             paths./schema-example.get.responses[501].content.application/json.schema.properties.some-date.example
- 146:30  error  oas3-valid-schema-example  `example` property should match format `url`                                   paths./schema-example.get.responses[501].content.application/json.schema.properties.some-url.example
- 169:20  error  oas3-valid-media-example   `example` property should be equal to one of the allowed values: `foo`, `bar`  paths./param-examples.get.parameters[1].example
- 185:22  error  oas3-valid-schema-example  `example` property should be equal to one of the allowed values: `foo`, `bar`  paths./param-examples.get.parameters[3].schema.example
- 197:22  error  oas3-valid-media-example   `value` property type should be string                                         paths./param-examples.get.parameters[4].examples.the-bad.value
- 199:21  error  oas3-valid-media-example   `value` property type should be string                                         paths./param-examples.get.parameters[4].examples.the-ugly.value
- 262:25  error  oas3-valid-media-example   `value` property should have required property `id`                            paths./response-examples.get.responses[500].content.application/json.examples.response.value
- 282:25  error  oas3-valid-media-example   `value` property should have required property `user`                          paths./response-examples-via-$ref.get.responses[200].content.application/json.examples.response.value
+ 126:25  error  oas3-valid-schema-example  `example` property must have required property `name`                        paths./schema-example.get.responses[500].content.application/json.schema.example
+ 138:30  error  oas3-valid-schema-example  `example` property type must be boolean                                      paths./schema-example.get.responses[501].content.application/json.schema.properties.some-bool.example
+ 142:30  error  oas3-valid-schema-example  `example` property must match format `date-time`                             paths./schema-example.get.responses[501].content.application/json.schema.properties.some-date.example
+ 146:30  error  oas3-valid-schema-example  `example` property must match format `url`                                   paths./schema-example.get.responses[501].content.application/json.schema.properties.some-url.example
+ 169:20  error  oas3-valid-media-example   `example` property must be equal to one of the allowed values: `foo`, `bar`  paths./param-examples.get.parameters[1].example
+ 185:22  error  oas3-valid-schema-example  `example` property must be equal to one of the allowed values: `foo`, `bar`  paths./param-examples.get.parameters[3].schema.example
+ 197:22  error  oas3-valid-media-example   `value` property type must be string                                         paths./param-examples.get.parameters[4].examples.the-bad.value
+ 199:21  error  oas3-valid-media-example   `value` property type must be string                                         paths./param-examples.get.parameters[4].examples.the-ugly.value
+ 262:25  error  oas3-valid-media-example   `value` property must have required property `id`                            paths./response-examples.get.responses[500].content.application/json.examples.response.value
+ 282:25  error  oas3-valid-media-example   `value` property must have required property `user`                          paths./response-examples-via-$ref.get.responses[200].content.application/json.examples.response.value
 
 ✖ 10 problems (10 errors, 0 warnings, 0 infos, 0 hints)
diff --git a/test-harness/scenarios/external-schemas-ruleset.scenario b/test-harness/scenarios/external-schemas-ruleset.scenario
index 1ac942e7..81c5940e 100644
--- a/test-harness/scenarios/external-schemas-ruleset.scenario
+++ b/test-harness/scenarios/external-schemas-ruleset.scenario
@@ -11,7 +11,7 @@ info:
 OpenAPI 3.x detected
 
 {document}
- 3:10  error  info-title        `title` property should be equal to one of the allowed values: `Stoplight`, `Stoplight.io`, `StoplightIO`. Did you mean `Stoplight`?  info.title
- 4:16  error  info-description  `description` property should be equal to one of the allowed values: `foo`, `foo-bar`, `bar-foo`                                      info.description
+ 3:10  error  info-title        `title` property must be equal to one of the allowed values: `Stoplight`, `Stoplight.io`, `StoplightIO`. Did you mean `Stoplight`?  info.title
+ 4:16  error  info-description  `description` property must be equal to one of the allowed values: `foo`, `foo-bar`, `bar-foo`                                      info.description
 
 ✖ 2 problems (2 errors, 0 warnings, 0 infos, 0 hints)
diff --git a/test-harness/scenarios/oas2-valid-media-example.oas2.scenario b/test-harness/scenarios/oas2-valid-media-example.oas2.scenario
index 38652e0c..a86b18f8 100644
--- a/test-harness/scenarios/oas2-valid-media-example.oas2.scenario
+++ b/test-harness/scenarios/oas2-valid-media-example.oas2.scenario
@@ -38,7 +38,7 @@ rules:
 OpenAPI 2.0 (Swagger) detected
 
 {document}
- 11:31  error  oas2-valid-media-example  `application/json` property type should be boolean                paths./pets.get.responses[200].examples.application/json
- 26:32  error  oas2-valid-media-example  `application/yaml` property should have required property `user`  paths./pets.get.post.responses[200].examples.application/yaml
+ 11:31  error  oas2-valid-media-example  `application/json` property type must be boolean                paths./pets.get.responses[200].examples.application/json
+ 26:32  error  oas2-valid-media-example  `application/yaml` property must have required property `user`  paths./pets.get.post.responses[200].examples.application/yaml
 
 ✖ 2 problems (2 errors, 0 warnings, 0 infos, 0 hints)
diff --git a/test-harness/scenarios/oas3-schema.scenario b/test-harness/scenarios/oas3-schema.scenario
index 097cd353..6981363b 100644
--- a/test-harness/scenarios/oas3-schema.scenario
+++ b/test-harness/scenarios/oas3-schema.scenario
@@ -57,14 +57,14 @@ rules:
 OpenAPI 3.x detected
 
 {document}
-  6:10  error  oas3-schema  Property `foo` is not expected to be here.                     info.contact.foo
- 12:17  error  oas3-schema  Property `type` is not expected to be here.                    paths./user.get.parameters[0].type
- 23:18  error  oas3-schema  `type` property type should be string.                         paths./user.get.parameters[1].schema.type
- 24:11  error  oas3-schema  `2` property should have required property `schema`.           paths./user.get.parameters[2]
- 26:17  error  oas3-schema  Property `type` is not expected to be here.                    paths./user.get.parameters[2].type
- 37:28  error  oas3-schema  `user_id` property type should be object.                      paths./user.get.responses[200].content.application/json.schema.properties.user_id
- 41:28  error  oas3-schema  `properties` property type should be object.                   paths./user.get.responses[200].content.application/yaml.schema.properties
- 43:23  error  oas3-schema  `description` property type should be string.                  paths./user.get.responses[400].description
- 46:17  error  oas3-schema  `responses` property should not have fewer than 1 properties.  paths./address.get.responses
+  6:10  error  oas3-schema  Property `foo` is not expected to be here.                   info.contact.foo
+ 12:17  error  oas3-schema  Property `type` is not expected to be here.                  paths./user.get.parameters[0].type
+ 23:18  error  oas3-schema  `type` property type must be string.                         paths./user.get.parameters[1].schema.type
+ 24:11  error  oas3-schema  `2` property must have required property `schema`.           paths./user.get.parameters[2]
+ 26:17  error  oas3-schema  Property `type` is not expected to be here.                  paths./user.get.parameters[2].type
+ 37:28  error  oas3-schema  `user_id` property type must be object.                      paths./user.get.responses[200].content.application/json.schema.properties.user_id
+ 41:28  error  oas3-schema  `properties` property type must be object.                   paths./user.get.responses[200].content.application/yaml.schema.properties
+ 43:23  error  oas3-schema  `description` property type must be string.                  paths./user.get.responses[400].description
+ 46:17  error  oas3-schema  `responses` property must not have fewer than 1 properties.  paths./address.get.responses
 
 ✖ 9 problems (9 errors, 0 warnings, 0 infos, 0 hints)