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
docassert/__init__.py
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"""docassert — unit testing for business documents.
|
|
2
|
+
|
|
3
|
+
Validate structured Markdown business documents against a configurable audit
|
|
4
|
+
standard: deterministic structural checks that gate a merge, plus optional
|
|
5
|
+
AI-graded semantic checks that advise.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
__version__ = "0.1.0"
|
docassert/__main__.py
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Cross-document traceability rules.
|
|
2
|
+
#
|
|
3
|
+
# The chain: BR (business req) ◀ PR (product req) ◀ FR/NFR (spec)
|
|
4
|
+
# PR ◀ AC (acceptance criterion) ◀ TC (test case)
|
|
5
|
+
#
|
|
6
|
+
# Broken references are ALWAYS blocking. The rules below (required links and
|
|
7
|
+
# coverage) block only when the owning document is `status: approved`, so
|
|
8
|
+
# work-in-progress is never punished.
|
|
9
|
+
|
|
10
|
+
# Each downstream item prefix must declare at least one target via this
|
|
11
|
+
# relation (else it's an orphan).
|
|
12
|
+
required_links:
|
|
13
|
+
PR: traces # a product requirement must trace to a business requirement
|
|
14
|
+
FR: traces # a functional requirement must trace to a product requirement
|
|
15
|
+
NFR: traces # a non-functional requirement must trace to a product requirement
|
|
16
|
+
US: traces # a user story must trace to a product requirement
|
|
17
|
+
AC: verifies # an acceptance criterion must verify a requirement
|
|
18
|
+
TC: tests # a test case must test an acceptance criterion
|
|
19
|
+
|
|
20
|
+
# Every parent item (by prefix) must be covered by >=1 child of `by_prefix`
|
|
21
|
+
# linking to it via `relation`.
|
|
22
|
+
coverage:
|
|
23
|
+
- parent: BR
|
|
24
|
+
relation: traces
|
|
25
|
+
by_prefix: PR
|
|
26
|
+
label: business requirement covered by a product requirement
|
|
27
|
+
- parent: PR
|
|
28
|
+
relation: verifies
|
|
29
|
+
by_prefix: AC
|
|
30
|
+
label: product requirement covered by an acceptance criterion
|
|
31
|
+
- parent: AC
|
|
32
|
+
relation: tests
|
|
33
|
+
by_prefix: TC
|
|
34
|
+
label: acceptance criterion covered by a test case
|
|
35
|
+
|
|
36
|
+
# Advisory AI alignment: for each relation, judge whether the child genuinely
|
|
37
|
+
# fulfils the parent it links to. Never blocks.
|
|
38
|
+
alignment:
|
|
39
|
+
- relation: traces
|
|
40
|
+
prompt: >
|
|
41
|
+
Judge whether the CHILD requirement genuinely refines or implements the
|
|
42
|
+
PARENT requirement it traces to, rather than being merely topically
|
|
43
|
+
related. Penalise links that don't actually follow from the parent.
|
|
44
|
+
- relation: verifies
|
|
45
|
+
prompt: >
|
|
46
|
+
Judge whether the acceptance criterion actually verifies the requirement
|
|
47
|
+
it targets: testable, and covering the requirement's intent.
|
|
48
|
+
- relation: tests
|
|
49
|
+
prompt: >
|
|
50
|
+
Judge whether the test case actually exercises the acceptance criterion
|
|
51
|
+
it targets.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Audit criteria for the Architecture Decision Record (ADR) kind.
|
|
2
|
+
#
|
|
3
|
+
# Modeled as a decision log: one document holds many **ADR-###** decision items,
|
|
4
|
+
# each optionally affecting a requirement. (Distinct from the portfolio-level
|
|
5
|
+
# "Decision" concept.)
|
|
6
|
+
kind: adr
|
|
7
|
+
|
|
8
|
+
required_sections:
|
|
9
|
+
- Overview
|
|
10
|
+
- Decisions
|
|
11
|
+
|
|
12
|
+
item_sections:
|
|
13
|
+
- section: Decisions
|
|
14
|
+
prefix: ADR
|
|
15
|
+
|
|
16
|
+
checks:
|
|
17
|
+
- id: frontmatter-schema
|
|
18
|
+
type: structural
|
|
19
|
+
blocking: true
|
|
20
|
+
description: Frontmatter is valid against schema/adr.schema.json.
|
|
21
|
+
- id: required-sections
|
|
22
|
+
type: structural
|
|
23
|
+
blocking: true
|
|
24
|
+
description: Every required section is present and non-empty.
|
|
25
|
+
- id: items-well-formed
|
|
26
|
+
type: structural
|
|
27
|
+
blocking: true
|
|
28
|
+
description: Every decision is a valid **ADR-###** item.
|
|
29
|
+
- id: adr-items-have-status
|
|
30
|
+
type: structural
|
|
31
|
+
blocking: true
|
|
32
|
+
description: Every decision declares a valid Status (proposed | accepted | superseded | deprecated | rejected).
|
|
33
|
+
- id: unique-id
|
|
34
|
+
type: structural
|
|
35
|
+
blocking: true
|
|
36
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Audit criteria for the Benefits Realization kind.
|
|
2
|
+
kind: benefits-realization
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Overview
|
|
6
|
+
- Benefits
|
|
7
|
+
- Measurement
|
|
8
|
+
- Realized Value
|
|
9
|
+
|
|
10
|
+
# Bullets in these sections must state a measurable threshold.
|
|
11
|
+
measurable_sections:
|
|
12
|
+
- Benefits
|
|
13
|
+
|
|
14
|
+
checks:
|
|
15
|
+
- id: frontmatter-schema
|
|
16
|
+
type: structural
|
|
17
|
+
blocking: true
|
|
18
|
+
description: Frontmatter is valid against schema/benefits-realization.schema.json.
|
|
19
|
+
- id: required-sections
|
|
20
|
+
type: structural
|
|
21
|
+
blocking: true
|
|
22
|
+
description: Every required section is present and non-empty.
|
|
23
|
+
- id: measurable-items
|
|
24
|
+
type: structural
|
|
25
|
+
blocking: true
|
|
26
|
+
description: Every benefit states a measurable target.
|
|
27
|
+
- id: unique-id
|
|
28
|
+
type: structural
|
|
29
|
+
blocking: true
|
|
30
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Audit criteria for the Business Requirements Document (BRD) kind.
|
|
2
|
+
kind: brd
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Purpose
|
|
6
|
+
- Business Requirements
|
|
7
|
+
- Out of Scope
|
|
8
|
+
|
|
9
|
+
# Sections whose bullets are traceable items.
|
|
10
|
+
item_sections:
|
|
11
|
+
- section: Business Requirements
|
|
12
|
+
prefix: BR
|
|
13
|
+
|
|
14
|
+
checks:
|
|
15
|
+
- id: frontmatter-schema
|
|
16
|
+
type: structural
|
|
17
|
+
blocking: true
|
|
18
|
+
description: Frontmatter is valid against schema/brd.schema.json.
|
|
19
|
+
- id: required-sections
|
|
20
|
+
type: structural
|
|
21
|
+
blocking: true
|
|
22
|
+
description: Every required section is present and non-empty.
|
|
23
|
+
- id: items-well-formed
|
|
24
|
+
type: structural
|
|
25
|
+
blocking: true
|
|
26
|
+
description: Every Business Requirement is a valid **BR-###** item.
|
|
27
|
+
- id: unique-id
|
|
28
|
+
type: structural
|
|
29
|
+
blocking: true
|
|
30
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Audit criteria for the Business Case kind.
|
|
2
|
+
kind: business-case
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Problem Statement
|
|
6
|
+
- Options Considered
|
|
7
|
+
- Recommendation
|
|
8
|
+
- Costs
|
|
9
|
+
- Benefits
|
|
10
|
+
|
|
11
|
+
checks:
|
|
12
|
+
- id: frontmatter-schema
|
|
13
|
+
type: structural
|
|
14
|
+
blocking: true
|
|
15
|
+
description: Frontmatter is valid against schema/business-case.schema.json.
|
|
16
|
+
- id: required-sections
|
|
17
|
+
type: structural
|
|
18
|
+
blocking: true
|
|
19
|
+
description: Every required section is present and non-empty.
|
|
20
|
+
- id: unique-id
|
|
21
|
+
type: structural
|
|
22
|
+
blocking: true
|
|
23
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Audit criteria for the Charter document kind.
|
|
2
|
+
#
|
|
3
|
+
# This file is the configurable contract for what "passing" means. Edit it to
|
|
4
|
+
# tune your organisation's standard without touching the validator code.
|
|
5
|
+
#
|
|
6
|
+
# type: structural -> deterministic Python check (always reliable)
|
|
7
|
+
# semantic -> AI-graded rubric check (Anthropic API)
|
|
8
|
+
# blocking: true -> a failure fails CI and blocks the PR merge
|
|
9
|
+
# false -> a failure is reported as advisory only
|
|
10
|
+
#
|
|
11
|
+
# Policy (confirmed): structural checks block; semantic checks advise.
|
|
12
|
+
|
|
13
|
+
kind: charter
|
|
14
|
+
|
|
15
|
+
required_sections:
|
|
16
|
+
- Objective
|
|
17
|
+
- Success Criteria
|
|
18
|
+
- Scope
|
|
19
|
+
- Milestones
|
|
20
|
+
- Risks
|
|
21
|
+
- Approval
|
|
22
|
+
|
|
23
|
+
checks:
|
|
24
|
+
- id: frontmatter-schema
|
|
25
|
+
type: structural
|
|
26
|
+
blocking: true
|
|
27
|
+
description: Frontmatter is present and valid against schema/charter.schema.json.
|
|
28
|
+
|
|
29
|
+
- id: required-sections
|
|
30
|
+
type: structural
|
|
31
|
+
blocking: true
|
|
32
|
+
description: Every required section is present and non-empty.
|
|
33
|
+
|
|
34
|
+
- id: measurable-success-criteria
|
|
35
|
+
type: structural
|
|
36
|
+
blocking: true
|
|
37
|
+
description: Every Success Criteria bullet states a measurable threshold (number, %, currency, or date).
|
|
38
|
+
|
|
39
|
+
- id: risks-have-owner-and-mitigation
|
|
40
|
+
type: structural
|
|
41
|
+
blocking: true
|
|
42
|
+
description: Every Risks bullet names an Owner and a Mitigation.
|
|
43
|
+
|
|
44
|
+
- id: dates-consistent
|
|
45
|
+
type: structural
|
|
46
|
+
blocking: true
|
|
47
|
+
description: Dates parse and the target date is on or after the created date.
|
|
48
|
+
|
|
49
|
+
- id: unique-id
|
|
50
|
+
type: structural
|
|
51
|
+
blocking: true
|
|
52
|
+
description: The document id is unique across documents/.
|
|
53
|
+
|
|
54
|
+
- id: objective-is-specific
|
|
55
|
+
type: semantic
|
|
56
|
+
blocking: false
|
|
57
|
+
pass_threshold: 0.7
|
|
58
|
+
prompt: >
|
|
59
|
+
You are auditing a project charter's Objective section. Judge whether it
|
|
60
|
+
states a specific, outcome-oriented goal a reader could hold the team
|
|
61
|
+
accountable to — not a vague aspiration or a restatement of the project
|
|
62
|
+
name. Reward concrete outcomes and measurable intent; penalise generic
|
|
63
|
+
filler ("drive synergies", "enhance capabilities").
|
|
64
|
+
|
|
65
|
+
- id: success-criteria-verifiable
|
|
66
|
+
type: semantic
|
|
67
|
+
blocking: false
|
|
68
|
+
pass_threshold: 0.7
|
|
69
|
+
prompt: >
|
|
70
|
+
You are auditing a project charter's Success Criteria. Judge whether each
|
|
71
|
+
criterion could be objectively verified by an independent third party
|
|
72
|
+
after the fact — i.e. it names a metric and a threshold, not a feeling.
|
|
73
|
+
Penalise criteria that are subjective or unmeasurable.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Audit criteria for the Data Migration Plan kind.
|
|
2
|
+
kind: data-migration-plan
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Scope
|
|
6
|
+
- Source Systems
|
|
7
|
+
- Field Mapping
|
|
8
|
+
- Validation
|
|
9
|
+
- Cutover
|
|
10
|
+
- Rollback
|
|
11
|
+
|
|
12
|
+
checks:
|
|
13
|
+
- id: frontmatter-schema
|
|
14
|
+
type: structural
|
|
15
|
+
blocking: true
|
|
16
|
+
description: Frontmatter is valid against schema/data-migration-plan.schema.json.
|
|
17
|
+
- id: required-sections
|
|
18
|
+
type: structural
|
|
19
|
+
blocking: true
|
|
20
|
+
description: Every required section is present and non-empty.
|
|
21
|
+
- id: mapping-table
|
|
22
|
+
type: structural
|
|
23
|
+
blocking: true
|
|
24
|
+
description: The Field Mapping section contains a mapping table.
|
|
25
|
+
- id: unique-id
|
|
26
|
+
type: structural
|
|
27
|
+
blocking: true
|
|
28
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Audit criteria for the Functional / Non-Functional Requirements kind.
|
|
2
|
+
kind: frnfr
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Overview
|
|
6
|
+
- Functional Requirements
|
|
7
|
+
- Non-Functional Requirements
|
|
8
|
+
|
|
9
|
+
item_sections:
|
|
10
|
+
- section: Functional Requirements
|
|
11
|
+
prefix: FR
|
|
12
|
+
- section: Non-Functional Requirements
|
|
13
|
+
prefix: NFR
|
|
14
|
+
|
|
15
|
+
checks:
|
|
16
|
+
- id: frontmatter-schema
|
|
17
|
+
type: structural
|
|
18
|
+
blocking: true
|
|
19
|
+
description: Frontmatter is valid against schema/frnfr.schema.json.
|
|
20
|
+
- id: required-sections
|
|
21
|
+
type: structural
|
|
22
|
+
blocking: true
|
|
23
|
+
description: Every required section is present and non-empty.
|
|
24
|
+
- id: items-well-formed
|
|
25
|
+
type: structural
|
|
26
|
+
blocking: true
|
|
27
|
+
description: Functional requirements are **FR-###**, non-functional are **NFR-###**.
|
|
28
|
+
- id: unique-id
|
|
29
|
+
type: structural
|
|
30
|
+
blocking: true
|
|
31
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Audit criteria for the Hypercare Plan kind.
|
|
2
|
+
kind: hypercare-plan
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Overview
|
|
6
|
+
- Support Window
|
|
7
|
+
- Severity Levels
|
|
8
|
+
- Escalation
|
|
9
|
+
- Exit Criteria
|
|
10
|
+
|
|
11
|
+
checks:
|
|
12
|
+
- id: frontmatter-schema
|
|
13
|
+
type: structural
|
|
14
|
+
blocking: true
|
|
15
|
+
description: Frontmatter is valid against schema/hypercare-plan.schema.json.
|
|
16
|
+
- id: required-sections
|
|
17
|
+
type: structural
|
|
18
|
+
blocking: true
|
|
19
|
+
description: Every required section is present and non-empty.
|
|
20
|
+
- id: measurable-exit-criteria
|
|
21
|
+
type: structural
|
|
22
|
+
blocking: true
|
|
23
|
+
description: Every hypercare exit criterion states a measurable threshold.
|
|
24
|
+
- id: unique-id
|
|
25
|
+
type: structural
|
|
26
|
+
blocking: true
|
|
27
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Audit criteria for the Post-Implementation Review kind.
|
|
2
|
+
kind: post-implementation-review
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Summary
|
|
6
|
+
- Outcomes vs Objectives
|
|
7
|
+
- What Went Well
|
|
8
|
+
- What Could Improve
|
|
9
|
+
- Lessons Learned
|
|
10
|
+
- Follow-up Actions
|
|
11
|
+
|
|
12
|
+
checks:
|
|
13
|
+
- id: frontmatter-schema
|
|
14
|
+
type: structural
|
|
15
|
+
blocking: true
|
|
16
|
+
description: Frontmatter is valid against schema/post-implementation-review.schema.json.
|
|
17
|
+
- id: required-sections
|
|
18
|
+
type: structural
|
|
19
|
+
blocking: true
|
|
20
|
+
description: Every required section is present and non-empty.
|
|
21
|
+
- id: unique-id
|
|
22
|
+
type: structural
|
|
23
|
+
blocking: true
|
|
24
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Audit criteria for the Product Requirements Document (PRD) kind.
|
|
2
|
+
kind: prd
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Overview
|
|
6
|
+
- Product Requirements
|
|
7
|
+
- Acceptance Criteria
|
|
8
|
+
|
|
9
|
+
item_sections:
|
|
10
|
+
- section: Product Requirements
|
|
11
|
+
prefix: PR
|
|
12
|
+
- section: Acceptance Criteria
|
|
13
|
+
prefix: AC
|
|
14
|
+
|
|
15
|
+
checks:
|
|
16
|
+
- id: frontmatter-schema
|
|
17
|
+
type: structural
|
|
18
|
+
blocking: true
|
|
19
|
+
description: Frontmatter is valid against schema/prd.schema.json.
|
|
20
|
+
- id: required-sections
|
|
21
|
+
type: structural
|
|
22
|
+
blocking: true
|
|
23
|
+
description: Every required section is present and non-empty.
|
|
24
|
+
- id: items-well-formed
|
|
25
|
+
type: structural
|
|
26
|
+
blocking: true
|
|
27
|
+
description: Product Requirements are **PR-###** items; Acceptance Criteria are **AC-###** items.
|
|
28
|
+
- id: unique-id
|
|
29
|
+
type: structural
|
|
30
|
+
blocking: true
|
|
31
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Audit criteria for the Project anchor kind.
|
|
2
|
+
#
|
|
3
|
+
# A `project.md` sits at the root of each documents/PRJ-NNN-CODE/ folder and
|
|
4
|
+
# declares that project's canonical identity. The registry (projects.yaml) and
|
|
5
|
+
# the per-project pages are derived from these anchors.
|
|
6
|
+
|
|
7
|
+
kind: project
|
|
8
|
+
|
|
9
|
+
required_sections:
|
|
10
|
+
- Overview
|
|
11
|
+
- Scope
|
|
12
|
+
|
|
13
|
+
checks:
|
|
14
|
+
- id: frontmatter-schema
|
|
15
|
+
type: structural
|
|
16
|
+
blocking: true
|
|
17
|
+
description: Frontmatter is present and valid against schema/project.schema.json.
|
|
18
|
+
|
|
19
|
+
- id: project-id-format
|
|
20
|
+
type: structural
|
|
21
|
+
blocking: true
|
|
22
|
+
description: The id is PRJ-NNN-CODE and its CODE tail equals the `code` field.
|
|
23
|
+
|
|
24
|
+
- id: required-sections
|
|
25
|
+
type: structural
|
|
26
|
+
blocking: true
|
|
27
|
+
description: Every required section is present and non-empty.
|
|
28
|
+
|
|
29
|
+
- id: unique-id
|
|
30
|
+
type: structural
|
|
31
|
+
blocking: true
|
|
32
|
+
description: The project id is unique across documents/.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Audit criteria for the QA / Test Plan kind.
|
|
2
|
+
kind: qa-test-plan
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Scope
|
|
6
|
+
- Test Approach
|
|
7
|
+
- Environments
|
|
8
|
+
- Entry Criteria
|
|
9
|
+
- Exit Criteria
|
|
10
|
+
|
|
11
|
+
checks:
|
|
12
|
+
- id: frontmatter-schema
|
|
13
|
+
type: structural
|
|
14
|
+
blocking: true
|
|
15
|
+
description: Frontmatter is valid against schema/qa-test-plan.schema.json.
|
|
16
|
+
- id: required-sections
|
|
17
|
+
type: structural
|
|
18
|
+
blocking: true
|
|
19
|
+
description: Every required section is present and non-empty.
|
|
20
|
+
- id: measurable-exit-criteria
|
|
21
|
+
type: structural
|
|
22
|
+
blocking: true
|
|
23
|
+
description: Every exit criterion states a measurable threshold.
|
|
24
|
+
- id: unique-id
|
|
25
|
+
type: structural
|
|
26
|
+
blocking: true
|
|
27
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Audit criteria for the RACI / Stakeholder Register kind.
|
|
2
|
+
kind: raci-stakeholder
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Stakeholders
|
|
6
|
+
- RACI Matrix
|
|
7
|
+
|
|
8
|
+
checks:
|
|
9
|
+
- id: frontmatter-schema
|
|
10
|
+
type: structural
|
|
11
|
+
blocking: true
|
|
12
|
+
description: Frontmatter is valid against schema/raci-stakeholder.schema.json.
|
|
13
|
+
- id: required-sections
|
|
14
|
+
type: structural
|
|
15
|
+
blocking: true
|
|
16
|
+
description: Every required section is present and non-empty.
|
|
17
|
+
- id: raci-one-accountable
|
|
18
|
+
type: structural
|
|
19
|
+
blocking: true
|
|
20
|
+
description: Every activity in the RACI Matrix has exactly one Accountable (A) role.
|
|
21
|
+
- id: unique-id
|
|
22
|
+
type: structural
|
|
23
|
+
blocking: true
|
|
24
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Audit criteria for the Release / Cutover Plan kind.
|
|
2
|
+
kind: release-cutover-plan
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Overview
|
|
6
|
+
- Pre-Cutover Checklist
|
|
7
|
+
- Cutover Steps
|
|
8
|
+
- Verification
|
|
9
|
+
- Rollback Trigger
|
|
10
|
+
|
|
11
|
+
steps_sections:
|
|
12
|
+
- Cutover Steps
|
|
13
|
+
|
|
14
|
+
checks:
|
|
15
|
+
- id: frontmatter-schema
|
|
16
|
+
type: structural
|
|
17
|
+
blocking: true
|
|
18
|
+
description: Frontmatter is valid against schema/release-cutover-plan.schema.json.
|
|
19
|
+
- id: required-sections
|
|
20
|
+
type: structural
|
|
21
|
+
blocking: true
|
|
22
|
+
description: Every required section is present and non-empty.
|
|
23
|
+
- id: numbered-steps
|
|
24
|
+
type: structural
|
|
25
|
+
blocking: true
|
|
26
|
+
description: Cutover Steps is an ordered list of at least two numbered steps.
|
|
27
|
+
- id: unique-id
|
|
28
|
+
type: structural
|
|
29
|
+
blocking: true
|
|
30
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Audit criteria for the Risk Register kind.
|
|
2
|
+
kind: risk-register
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Overview
|
|
6
|
+
- Risks
|
|
7
|
+
|
|
8
|
+
item_sections:
|
|
9
|
+
- section: Risks
|
|
10
|
+
prefix: RISK
|
|
11
|
+
|
|
12
|
+
checks:
|
|
13
|
+
- id: frontmatter-schema
|
|
14
|
+
type: structural
|
|
15
|
+
blocking: true
|
|
16
|
+
description: Frontmatter is valid against schema/risk-register.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 risk is a valid **RISK-###** item.
|
|
25
|
+
- id: risk-items-complete
|
|
26
|
+
type: structural
|
|
27
|
+
blocking: true
|
|
28
|
+
description: Every risk states a Probability, Impact, Owner, and Response.
|
|
29
|
+
- id: unique-id
|
|
30
|
+
type: structural
|
|
31
|
+
blocking: true
|
|
32
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Audit criteria for the Rollback Plan kind.
|
|
2
|
+
kind: rollback-plan
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Overview
|
|
6
|
+
- Trigger Conditions
|
|
7
|
+
- Rollback Steps
|
|
8
|
+
- Verification
|
|
9
|
+
|
|
10
|
+
steps_sections:
|
|
11
|
+
- Rollback Steps
|
|
12
|
+
|
|
13
|
+
checks:
|
|
14
|
+
- id: frontmatter-schema
|
|
15
|
+
type: structural
|
|
16
|
+
blocking: true
|
|
17
|
+
description: Frontmatter is valid against schema/rollback-plan.schema.json.
|
|
18
|
+
- id: required-sections
|
|
19
|
+
type: structural
|
|
20
|
+
blocking: true
|
|
21
|
+
description: Every required section is present and non-empty.
|
|
22
|
+
- id: numbered-steps
|
|
23
|
+
type: structural
|
|
24
|
+
blocking: true
|
|
25
|
+
description: Rollback Steps is an ordered list of at least two numbered steps.
|
|
26
|
+
- id: unique-id
|
|
27
|
+
type: structural
|
|
28
|
+
blocking: true
|
|
29
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Audit criteria for the Runbook kind.
|
|
2
|
+
kind: runbook
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Overview
|
|
6
|
+
- Prerequisites
|
|
7
|
+
- Procedures
|
|
8
|
+
- Monitoring
|
|
9
|
+
- Escalation
|
|
10
|
+
|
|
11
|
+
steps_sections:
|
|
12
|
+
- Procedures
|
|
13
|
+
|
|
14
|
+
checks:
|
|
15
|
+
- id: frontmatter-schema
|
|
16
|
+
type: structural
|
|
17
|
+
blocking: true
|
|
18
|
+
description: Frontmatter is valid against schema/runbook.schema.json.
|
|
19
|
+
- id: required-sections
|
|
20
|
+
type: structural
|
|
21
|
+
blocking: true
|
|
22
|
+
description: Every required section is present and non-empty.
|
|
23
|
+
- id: numbered-steps
|
|
24
|
+
type: structural
|
|
25
|
+
blocking: true
|
|
26
|
+
description: Procedures is an ordered list of at least two numbered steps.
|
|
27
|
+
- id: unique-id
|
|
28
|
+
type: structural
|
|
29
|
+
blocking: true
|
|
30
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Audit criteria for the Status Report kind.
|
|
2
|
+
kind: status-report
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Summary
|
|
6
|
+
- Progress
|
|
7
|
+
- Risks & Issues
|
|
8
|
+
- Next Steps
|
|
9
|
+
|
|
10
|
+
checks:
|
|
11
|
+
- id: frontmatter-schema
|
|
12
|
+
type: structural
|
|
13
|
+
blocking: true
|
|
14
|
+
description: Frontmatter is valid (includes a period date and a green/amber/red rag).
|
|
15
|
+
- id: required-sections
|
|
16
|
+
type: structural
|
|
17
|
+
blocking: true
|
|
18
|
+
description: Every required section is present and non-empty.
|
|
19
|
+
- id: references-risk
|
|
20
|
+
type: structural
|
|
21
|
+
blocking: true
|
|
22
|
+
description: The Risks & Issues section cites at least one RISK-### from the register.
|
|
23
|
+
- id: unique-id
|
|
24
|
+
type: structural
|
|
25
|
+
blocking: true
|
|
26
|
+
description: The document id is unique across documents/.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Audit criteria for the Test Cases kind.
|
|
2
|
+
kind: test-cases
|
|
3
|
+
|
|
4
|
+
required_sections:
|
|
5
|
+
- Overview
|
|
6
|
+
- Test Cases
|
|
7
|
+
|
|
8
|
+
item_sections:
|
|
9
|
+
- section: Test Cases
|
|
10
|
+
prefix: TC
|
|
11
|
+
|
|
12
|
+
checks:
|
|
13
|
+
- id: frontmatter-schema
|
|
14
|
+
type: structural
|
|
15
|
+
blocking: true
|
|
16
|
+
description: Frontmatter is valid against schema/test-cases.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 test case is a valid **TC-###** item that tests an acceptance criterion.
|
|
25
|
+
- id: unique-id
|
|
26
|
+
type: structural
|
|
27
|
+
blocking: true
|
|
28
|
+
description: The document id is unique across documents/.
|