docassert 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- docassert/__init__.py +8 -0
- docassert/__main__.py +6 -0
- docassert/_data/consistency.yaml +51 -0
- docassert/_data/criteria/adr.criteria.yaml +36 -0
- docassert/_data/criteria/benefits-realization.criteria.yaml +30 -0
- docassert/_data/criteria/brd.criteria.yaml +30 -0
- docassert/_data/criteria/business-case.criteria.yaml +23 -0
- docassert/_data/criteria/charter.criteria.yaml +73 -0
- docassert/_data/criteria/data-migration-plan.criteria.yaml +28 -0
- docassert/_data/criteria/frnfr.criteria.yaml +31 -0
- docassert/_data/criteria/hypercare-plan.criteria.yaml +27 -0
- docassert/_data/criteria/post-implementation-review.criteria.yaml +24 -0
- docassert/_data/criteria/prd.criteria.yaml +31 -0
- docassert/_data/criteria/project.criteria.yaml +32 -0
- docassert/_data/criteria/qa-test-plan.criteria.yaml +27 -0
- docassert/_data/criteria/raci-stakeholder.criteria.yaml +24 -0
- docassert/_data/criteria/release-cutover-plan.criteria.yaml +30 -0
- docassert/_data/criteria/risk-register.criteria.yaml +32 -0
- docassert/_data/criteria/rollback-plan.criteria.yaml +29 -0
- docassert/_data/criteria/runbook.criteria.yaml +30 -0
- docassert/_data/criteria/status-report.criteria.yaml +26 -0
- docassert/_data/criteria/test-cases.criteria.yaml +28 -0
- docassert/_data/criteria/user-story.criteria.yaml +32 -0
- docassert/_data/profiles/agile-delivery.yaml +20 -0
- docassert/_data/profiles/lean-startup.yaml +19 -0
- docassert/_data/profiles/regulated-industry.yaml +31 -0
- docassert/_data/schema/adr.schema.json +45 -0
- docassert/_data/schema/benefits-realization.schema.json +45 -0
- docassert/_data/schema/brd.schema.json +45 -0
- docassert/_data/schema/business-case.schema.json +45 -0
- docassert/_data/schema/charter.schema.json +84 -0
- docassert/_data/schema/data-migration-plan.schema.json +45 -0
- docassert/_data/schema/frnfr.schema.json +45 -0
- docassert/_data/schema/hypercare-plan.schema.json +45 -0
- docassert/_data/schema/post-implementation-review.schema.json +45 -0
- docassert/_data/schema/prd.schema.json +45 -0
- docassert/_data/schema/project.schema.json +32 -0
- docassert/_data/schema/qa-test-plan.schema.json +45 -0
- docassert/_data/schema/raci-stakeholder.schema.json +45 -0
- docassert/_data/schema/release-cutover-plan.schema.json +45 -0
- docassert/_data/schema/risk-register.schema.json +45 -0
- docassert/_data/schema/rollback-plan.schema.json +45 -0
- docassert/_data/schema/runbook.schema.json +45 -0
- docassert/_data/schema/status-report.schema.json +58 -0
- docassert/_data/schema/test-cases.schema.json +45 -0
- docassert/_data/schema/user-story.schema.json +45 -0
- docassert/_data/templates/adr.template.md +17 -0
- docassert/_data/templates/benefits-realization.template.md +25 -0
- docassert/_data/templates/brd.template.md +22 -0
- docassert/_data/templates/business-case.template.md +27 -0
- docassert/_data/templates/charter.template.md +46 -0
- docassert/_data/templates/data-migration-plan.template.md +35 -0
- docassert/_data/templates/frnfr.template.md +19 -0
- docassert/_data/templates/hypercare-plan.template.md +29 -0
- docassert/_data/templates/post-implementation-review.template.md +31 -0
- docassert/_data/templates/prd.template.md +23 -0
- docassert/_data/templates/project.template.md +17 -0
- docassert/_data/templates/qa-test-plan.template.md +31 -0
- docassert/_data/templates/raci-stakeholder.template.md +21 -0
- docassert/_data/templates/release-cutover-plan.template.md +28 -0
- docassert/_data/templates/risk-register.template.md +18 -0
- docassert/_data/templates/rollback-plan.template.md +24 -0
- docassert/_data/templates/runbook.template.md +28 -0
- docassert/_data/templates/status-report.template.md +27 -0
- docassert/_data/templates/test-cases.template.md +17 -0
- docassert/_data/templates/user-story.template.md +17 -0
- docassert/cli.py +291 -0
- docassert/config.py +104 -0
- docassert/consistency.py +167 -0
- docassert/graph.py +68 -0
- docassert/loader.py +116 -0
- docassert/models.py +99 -0
- docassert/profiles.py +111 -0
- docassert/projects.py +49 -0
- docassert/report.py +83 -0
- docassert/rtm.py +70 -0
- docassert/semantic.py +124 -0
- docassert/status.py +538 -0
- docassert/structural.py +406 -0
- docassert-0.1.0.dist-info/METADATA +125 -0
- docassert-0.1.0.dist-info/RECORD +86 -0
- docassert-0.1.0.dist-info/WHEEL +5 -0
- docassert-0.1.0.dist-info/entry_points.txt +2 -0
- docassert-0.1.0.dist-info/licenses/LICENSE +201 -0
- docassert-0.1.0.dist-info/licenses/NOTICE +4 -0
- docassert-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Audit criteria for the User Stories kind.
|
|
2
|
+
kind: user-story
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Overview
|
|
6
|
+
- User Stories
|
|
7
|
+
|
|
8
|
+
item_sections:
|
|
9
|
+
- section: User Stories
|
|
10
|
+
prefix: US
|
|
11
|
+
|
|
12
|
+
checks:
|
|
13
|
+
- id: frontmatter-schema
|
|
14
|
+
type: structural
|
|
15
|
+
blocking: true
|
|
16
|
+
description: Frontmatter is valid against schema/user-story.schema.json.
|
|
17
|
+
- id: required-sections
|
|
18
|
+
type: structural
|
|
19
|
+
blocking: true
|
|
20
|
+
description: Every required section is present and non-empty.
|
|
21
|
+
- id: items-well-formed
|
|
22
|
+
type: structural
|
|
23
|
+
blocking: true
|
|
24
|
+
description: Every story is a valid **US-###** item.
|
|
25
|
+
- id: story-format
|
|
26
|
+
type: structural
|
|
27
|
+
blocking: true
|
|
28
|
+
description: Every story follows "As a … I want … so that …".
|
|
29
|
+
- id: unique-id
|
|
30
|
+
type: structural
|
|
31
|
+
blocking: true
|
|
32
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Profile: agile-delivery
|
|
2
|
+
#
|
|
3
|
+
# User-story-centric. Stories carry acceptance criteria, every story traces to a
|
|
4
|
+
# product requirement, and every acceptance criterion needs a test case. For
|
|
5
|
+
# teams working in stories, not specs.
|
|
6
|
+
name: agile-delivery
|
|
7
|
+
description: >
|
|
8
|
+
Story-led delivery: charter, product requirements, user stories, and tests.
|
|
9
|
+
|
|
10
|
+
enforce_when: active
|
|
11
|
+
|
|
12
|
+
expects:
|
|
13
|
+
required:
|
|
14
|
+
- charter
|
|
15
|
+
- prd
|
|
16
|
+
- user-story
|
|
17
|
+
- test-cases
|
|
18
|
+
recommended:
|
|
19
|
+
- brd
|
|
20
|
+
- risk-register
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Profile: lean-startup
|
|
2
|
+
#
|
|
3
|
+
# A handful of kinds. Coverage stays advisory until you grow, so a small team is
|
|
4
|
+
# never blocked for unfinished downstream docs. Start here.
|
|
5
|
+
name: lean-startup
|
|
6
|
+
description: >
|
|
7
|
+
The minimum spine: a charter, requirements, and tests. For a small team that
|
|
8
|
+
wants the gate without the ceremony.
|
|
9
|
+
|
|
10
|
+
enforce_when: active
|
|
11
|
+
|
|
12
|
+
expects:
|
|
13
|
+
required:
|
|
14
|
+
- charter
|
|
15
|
+
- brd
|
|
16
|
+
- prd
|
|
17
|
+
- test-cases
|
|
18
|
+
recommended:
|
|
19
|
+
- risk-register
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Profile: regulated-industry
|
|
2
|
+
#
|
|
3
|
+
# The expected document set for a project on this profile. `required` kinds must
|
|
4
|
+
# exist and be complete (present + approved/baselined + passing audit); a missing
|
|
5
|
+
# required kind blocks CI once the project reaches `enforce_when`. `recommended`
|
|
6
|
+
# kinds are surfaced as gaps on the project page but never block.
|
|
7
|
+
name: regulated-industry
|
|
8
|
+
description: >
|
|
9
|
+
Strictest set. For finance, healthcare, or government — the full governance
|
|
10
|
+
spine, from business case through benefits realization.
|
|
11
|
+
|
|
12
|
+
# Completeness blocks the merge only once the project's status reaches this
|
|
13
|
+
# lifecycle stage (proposed projects show gaps as advisory, never blocking).
|
|
14
|
+
enforce_when: active
|
|
15
|
+
|
|
16
|
+
expects:
|
|
17
|
+
required:
|
|
18
|
+
- charter
|
|
19
|
+
- business-case
|
|
20
|
+
- brd
|
|
21
|
+
- prd
|
|
22
|
+
- frnfr
|
|
23
|
+
- test-cases
|
|
24
|
+
- risk-register
|
|
25
|
+
- raci-stakeholder
|
|
26
|
+
- qa-test-plan
|
|
27
|
+
recommended:
|
|
28
|
+
- adr
|
|
29
|
+
- runbook
|
|
30
|
+
- status-report
|
|
31
|
+
- benefits-realization
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Architecture Decision Record (log) frontmatter",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"kind",
|
|
7
|
+
"id",
|
|
8
|
+
"project",
|
|
9
|
+
"title",
|
|
10
|
+
"owner",
|
|
11
|
+
"status"
|
|
12
|
+
],
|
|
13
|
+
"additionalProperties": true,
|
|
14
|
+
"properties": {
|
|
15
|
+
"kind": {
|
|
16
|
+
"const": "adr"
|
|
17
|
+
},
|
|
18
|
+
"id": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"pattern": "^[A-Z]{2,6}-[a-z0-9][a-z0-9-]*$",
|
|
21
|
+
"description": "Stable id, <CODE>-<slug> (e.g. AUR-brd). The CODE namespaces it to the owning project. Unique across documents/."
|
|
22
|
+
},
|
|
23
|
+
"title": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 3
|
|
26
|
+
},
|
|
27
|
+
"owner": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 2
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"enum": [
|
|
33
|
+
"draft",
|
|
34
|
+
"proposed",
|
|
35
|
+
"approved",
|
|
36
|
+
"baselined"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"project": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^PRJ-\\d{3,}-[A-Z]{2,6}$",
|
|
42
|
+
"description": "Owning project's canonical id, PRJ-NNN-CODE (e.g. PRJ-001-AUR)."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Benefits Realization frontmatter",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"kind",
|
|
7
|
+
"id",
|
|
8
|
+
"project",
|
|
9
|
+
"title",
|
|
10
|
+
"owner",
|
|
11
|
+
"status"
|
|
12
|
+
],
|
|
13
|
+
"additionalProperties": true,
|
|
14
|
+
"properties": {
|
|
15
|
+
"kind": {
|
|
16
|
+
"const": "benefits-realization"
|
|
17
|
+
},
|
|
18
|
+
"id": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"pattern": "^[A-Z]{2,6}-[a-z0-9][a-z0-9-]*$",
|
|
21
|
+
"description": "Stable id, <CODE>-<slug> (e.g. AUR-brd). The CODE namespaces it to the owning project. Unique across documents/."
|
|
22
|
+
},
|
|
23
|
+
"title": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 3
|
|
26
|
+
},
|
|
27
|
+
"owner": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 2
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"enum": [
|
|
33
|
+
"draft",
|
|
34
|
+
"proposed",
|
|
35
|
+
"approved",
|
|
36
|
+
"baselined"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"project": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^PRJ-\\d{3,}-[A-Z]{2,6}$",
|
|
42
|
+
"description": "Owning project's canonical id, PRJ-NNN-CODE (e.g. PRJ-001-AUR)."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Business Requirements Document frontmatter",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"kind",
|
|
7
|
+
"id",
|
|
8
|
+
"project",
|
|
9
|
+
"title",
|
|
10
|
+
"owner",
|
|
11
|
+
"status"
|
|
12
|
+
],
|
|
13
|
+
"additionalProperties": true,
|
|
14
|
+
"properties": {
|
|
15
|
+
"kind": {
|
|
16
|
+
"const": "brd"
|
|
17
|
+
},
|
|
18
|
+
"id": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"pattern": "^[A-Z]{2,6}-[a-z0-9][a-z0-9-]*$",
|
|
21
|
+
"description": "Stable id, <CODE>-<slug> (e.g. AUR-brd). The CODE namespaces it to the owning project. Unique across documents/."
|
|
22
|
+
},
|
|
23
|
+
"title": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 3
|
|
26
|
+
},
|
|
27
|
+
"owner": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 2
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"enum": [
|
|
33
|
+
"draft",
|
|
34
|
+
"proposed",
|
|
35
|
+
"approved",
|
|
36
|
+
"baselined"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"project": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^PRJ-\\d{3,}-[A-Z]{2,6}$",
|
|
42
|
+
"description": "Owning project's canonical id, PRJ-NNN-CODE (e.g. PRJ-001-AUR)."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Business Case frontmatter",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"kind",
|
|
7
|
+
"id",
|
|
8
|
+
"project",
|
|
9
|
+
"title",
|
|
10
|
+
"sponsor",
|
|
11
|
+
"status"
|
|
12
|
+
],
|
|
13
|
+
"additionalProperties": true,
|
|
14
|
+
"properties": {
|
|
15
|
+
"kind": {
|
|
16
|
+
"const": "business-case"
|
|
17
|
+
},
|
|
18
|
+
"id": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"pattern": "^[A-Z]{2,6}-[a-z0-9][a-z0-9-]*$",
|
|
21
|
+
"description": "Stable id, <CODE>-<slug> (e.g. AUR-brd). The CODE namespaces it to the owning project. Unique across documents/."
|
|
22
|
+
},
|
|
23
|
+
"title": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 3
|
|
26
|
+
},
|
|
27
|
+
"sponsor": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 2
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"enum": [
|
|
33
|
+
"draft",
|
|
34
|
+
"proposed",
|
|
35
|
+
"approved",
|
|
36
|
+
"baselined"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"project": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^PRJ-\\d{3,}-[A-Z]{2,6}$",
|
|
42
|
+
"description": "Owning project's canonical id, PRJ-NNN-CODE (e.g. PRJ-001-AUR)."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://pmo-as-code/schema/charter.schema.json",
|
|
4
|
+
"title": "Project Charter frontmatter",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"kind",
|
|
8
|
+
"id",
|
|
9
|
+
"project",
|
|
10
|
+
"title",
|
|
11
|
+
"sponsor",
|
|
12
|
+
"budget",
|
|
13
|
+
"dates",
|
|
14
|
+
"status"
|
|
15
|
+
],
|
|
16
|
+
"additionalProperties": true,
|
|
17
|
+
"properties": {
|
|
18
|
+
"kind": {
|
|
19
|
+
"const": "charter"
|
|
20
|
+
},
|
|
21
|
+
"id": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"pattern": "^[A-Z]{2,6}-[a-z0-9][a-z0-9-]*$",
|
|
24
|
+
"description": "Stable id, <CODE>-<slug> (e.g. AUR-brd). The CODE namespaces it to the owning project. Unique across documents/."
|
|
25
|
+
},
|
|
26
|
+
"title": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"minLength": 3
|
|
29
|
+
},
|
|
30
|
+
"sponsor": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"minLength": 2,
|
|
33
|
+
"description": "The accountable individual. A name or handle, not a team."
|
|
34
|
+
},
|
|
35
|
+
"budget": {
|
|
36
|
+
"type": "object",
|
|
37
|
+
"required": [
|
|
38
|
+
"amount",
|
|
39
|
+
"currency"
|
|
40
|
+
],
|
|
41
|
+
"additionalProperties": false,
|
|
42
|
+
"properties": {
|
|
43
|
+
"amount": {
|
|
44
|
+
"type": "number",
|
|
45
|
+
"exclusiveMinimum": 0
|
|
46
|
+
},
|
|
47
|
+
"currency": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"pattern": "^[A-Z]{3}$"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"dates": {
|
|
54
|
+
"type": "object",
|
|
55
|
+
"required": [
|
|
56
|
+
"created",
|
|
57
|
+
"target"
|
|
58
|
+
],
|
|
59
|
+
"additionalProperties": false,
|
|
60
|
+
"properties": {
|
|
61
|
+
"created": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"format": "date"
|
|
64
|
+
},
|
|
65
|
+
"target": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"format": "date"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"status": {
|
|
72
|
+
"enum": [
|
|
73
|
+
"draft",
|
|
74
|
+
"proposed",
|
|
75
|
+
"approved"
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
"project": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"pattern": "^PRJ-\\d{3,}-[A-Z]{2,6}$",
|
|
81
|
+
"description": "Owning project's canonical id, PRJ-NNN-CODE (e.g. PRJ-001-AUR)."
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Data Migration Plan frontmatter",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"kind",
|
|
7
|
+
"id",
|
|
8
|
+
"project",
|
|
9
|
+
"title",
|
|
10
|
+
"owner",
|
|
11
|
+
"status"
|
|
12
|
+
],
|
|
13
|
+
"additionalProperties": true,
|
|
14
|
+
"properties": {
|
|
15
|
+
"kind": {
|
|
16
|
+
"const": "data-migration-plan"
|
|
17
|
+
},
|
|
18
|
+
"id": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"pattern": "^[A-Z]{2,6}-[a-z0-9][a-z0-9-]*$",
|
|
21
|
+
"description": "Stable id, <CODE>-<slug> (e.g. AUR-brd). The CODE namespaces it to the owning project. Unique across documents/."
|
|
22
|
+
},
|
|
23
|
+
"title": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 3
|
|
26
|
+
},
|
|
27
|
+
"owner": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 2
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"enum": [
|
|
33
|
+
"draft",
|
|
34
|
+
"proposed",
|
|
35
|
+
"approved",
|
|
36
|
+
"baselined"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"project": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^PRJ-\\d{3,}-[A-Z]{2,6}$",
|
|
42
|
+
"description": "Owning project's canonical id, PRJ-NNN-CODE (e.g. PRJ-001-AUR)."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Functional / Non-Functional Requirements frontmatter",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"kind",
|
|
7
|
+
"id",
|
|
8
|
+
"project",
|
|
9
|
+
"title",
|
|
10
|
+
"owner",
|
|
11
|
+
"status"
|
|
12
|
+
],
|
|
13
|
+
"additionalProperties": true,
|
|
14
|
+
"properties": {
|
|
15
|
+
"kind": {
|
|
16
|
+
"const": "frnfr"
|
|
17
|
+
},
|
|
18
|
+
"id": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"pattern": "^[A-Z]{2,6}-[a-z0-9][a-z0-9-]*$",
|
|
21
|
+
"description": "Stable id, <CODE>-<slug> (e.g. AUR-brd). The CODE namespaces it to the owning project. Unique across documents/."
|
|
22
|
+
},
|
|
23
|
+
"title": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 3
|
|
26
|
+
},
|
|
27
|
+
"owner": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 2
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"enum": [
|
|
33
|
+
"draft",
|
|
34
|
+
"proposed",
|
|
35
|
+
"approved",
|
|
36
|
+
"baselined"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"project": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^PRJ-\\d{3,}-[A-Z]{2,6}$",
|
|
42
|
+
"description": "Owning project's canonical id, PRJ-NNN-CODE (e.g. PRJ-001-AUR)."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Hypercare Plan frontmatter",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"kind",
|
|
7
|
+
"id",
|
|
8
|
+
"project",
|
|
9
|
+
"title",
|
|
10
|
+
"owner",
|
|
11
|
+
"status"
|
|
12
|
+
],
|
|
13
|
+
"additionalProperties": true,
|
|
14
|
+
"properties": {
|
|
15
|
+
"kind": {
|
|
16
|
+
"const": "hypercare-plan"
|
|
17
|
+
},
|
|
18
|
+
"id": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"pattern": "^[A-Z]{2,6}-[a-z0-9][a-z0-9-]*$",
|
|
21
|
+
"description": "Stable id, <CODE>-<slug> (e.g. AUR-brd). The CODE namespaces it to the owning project. Unique across documents/."
|
|
22
|
+
},
|
|
23
|
+
"title": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 3
|
|
26
|
+
},
|
|
27
|
+
"owner": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 2
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"enum": [
|
|
33
|
+
"draft",
|
|
34
|
+
"proposed",
|
|
35
|
+
"approved",
|
|
36
|
+
"baselined"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"project": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^PRJ-\\d{3,}-[A-Z]{2,6}$",
|
|
42
|
+
"description": "Owning project's canonical id, PRJ-NNN-CODE (e.g. PRJ-001-AUR)."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Post-Implementation Review frontmatter",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"kind",
|
|
7
|
+
"id",
|
|
8
|
+
"project",
|
|
9
|
+
"title",
|
|
10
|
+
"owner",
|
|
11
|
+
"status"
|
|
12
|
+
],
|
|
13
|
+
"additionalProperties": true,
|
|
14
|
+
"properties": {
|
|
15
|
+
"kind": {
|
|
16
|
+
"const": "post-implementation-review"
|
|
17
|
+
},
|
|
18
|
+
"id": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"pattern": "^[A-Z]{2,6}-[a-z0-9][a-z0-9-]*$",
|
|
21
|
+
"description": "Stable id, <CODE>-<slug> (e.g. AUR-brd). The CODE namespaces it to the owning project. Unique across documents/."
|
|
22
|
+
},
|
|
23
|
+
"title": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 3
|
|
26
|
+
},
|
|
27
|
+
"owner": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 2
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"enum": [
|
|
33
|
+
"draft",
|
|
34
|
+
"proposed",
|
|
35
|
+
"approved",
|
|
36
|
+
"baselined"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"project": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^PRJ-\\d{3,}-[A-Z]{2,6}$",
|
|
42
|
+
"description": "Owning project's canonical id, PRJ-NNN-CODE (e.g. PRJ-001-AUR)."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Product Requirements Document frontmatter",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"kind",
|
|
7
|
+
"id",
|
|
8
|
+
"project",
|
|
9
|
+
"title",
|
|
10
|
+
"owner",
|
|
11
|
+
"status"
|
|
12
|
+
],
|
|
13
|
+
"additionalProperties": true,
|
|
14
|
+
"properties": {
|
|
15
|
+
"kind": {
|
|
16
|
+
"const": "prd"
|
|
17
|
+
},
|
|
18
|
+
"id": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"pattern": "^[A-Z]{2,6}-[a-z0-9][a-z0-9-]*$",
|
|
21
|
+
"description": "Stable id, <CODE>-<slug> (e.g. AUR-brd). The CODE namespaces it to the owning project. Unique across documents/."
|
|
22
|
+
},
|
|
23
|
+
"title": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 3
|
|
26
|
+
},
|
|
27
|
+
"owner": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 2
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"enum": [
|
|
33
|
+
"draft",
|
|
34
|
+
"proposed",
|
|
35
|
+
"approved",
|
|
36
|
+
"baselined"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"project": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^PRJ-\\d{3,}-[A-Z]{2,6}$",
|
|
42
|
+
"description": "Owning project's canonical id, PRJ-NNN-CODE (e.g. PRJ-001-AUR)."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://pmo-as-code/schema/project.schema.json",
|
|
4
|
+
"title": "Project anchor frontmatter",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["kind", "id", "code", "name", "sponsor", "status"],
|
|
7
|
+
"additionalProperties": true,
|
|
8
|
+
"properties": {
|
|
9
|
+
"kind": { "const": "project" },
|
|
10
|
+
"id": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"pattern": "^PRJ-\\d{3,}-[A-Z]{2,6}$",
|
|
13
|
+
"description": "Canonical project id, PRJ-NNN-CODE (e.g. PRJ-001-AUR). Unique across all projects."
|
|
14
|
+
},
|
|
15
|
+
"code": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"pattern": "^[A-Z]{2,6}$",
|
|
18
|
+
"description": "Short mnemonic that namespaces this project's document ids and item ids (e.g. AUR). Matches the id tail."
|
|
19
|
+
},
|
|
20
|
+
"name": { "type": "string", "minLength": 3 },
|
|
21
|
+
"sponsor": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"minLength": 2,
|
|
24
|
+
"description": "The accountable individual. A name or handle, not a team."
|
|
25
|
+
},
|
|
26
|
+
"status": { "enum": ["proposed", "active", "on-hold", "closed"] },
|
|
27
|
+
"profile": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"description": "Optional. Names a profiles/<name>.yaml that defines this project's expected document set (required/recommended kinds)."
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "QA / Test Plan frontmatter",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"kind",
|
|
7
|
+
"id",
|
|
8
|
+
"project",
|
|
9
|
+
"title",
|
|
10
|
+
"owner",
|
|
11
|
+
"status"
|
|
12
|
+
],
|
|
13
|
+
"additionalProperties": true,
|
|
14
|
+
"properties": {
|
|
15
|
+
"kind": {
|
|
16
|
+
"const": "qa-test-plan"
|
|
17
|
+
},
|
|
18
|
+
"id": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"pattern": "^[A-Z]{2,6}-[a-z0-9][a-z0-9-]*$",
|
|
21
|
+
"description": "Stable id, <CODE>-<slug> (e.g. AUR-brd). The CODE namespaces it to the owning project. Unique across documents/."
|
|
22
|
+
},
|
|
23
|
+
"title": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 3
|
|
26
|
+
},
|
|
27
|
+
"owner": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 2
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"enum": [
|
|
33
|
+
"draft",
|
|
34
|
+
"proposed",
|
|
35
|
+
"approved",
|
|
36
|
+
"baselined"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"project": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^PRJ-\\d{3,}-[A-Z]{2,6}$",
|
|
42
|
+
"description": "Owning project's canonical id, PRJ-NNN-CODE (e.g. PRJ-001-AUR)."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|