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.
Files changed (86) hide show
  1. docassert/__init__.py +8 -0
  2. docassert/__main__.py +6 -0
  3. docassert/_data/consistency.yaml +51 -0
  4. docassert/_data/criteria/adr.criteria.yaml +36 -0
  5. docassert/_data/criteria/benefits-realization.criteria.yaml +30 -0
  6. docassert/_data/criteria/brd.criteria.yaml +30 -0
  7. docassert/_data/criteria/business-case.criteria.yaml +23 -0
  8. docassert/_data/criteria/charter.criteria.yaml +73 -0
  9. docassert/_data/criteria/data-migration-plan.criteria.yaml +28 -0
  10. docassert/_data/criteria/frnfr.criteria.yaml +31 -0
  11. docassert/_data/criteria/hypercare-plan.criteria.yaml +27 -0
  12. docassert/_data/criteria/post-implementation-review.criteria.yaml +24 -0
  13. docassert/_data/criteria/prd.criteria.yaml +31 -0
  14. docassert/_data/criteria/project.criteria.yaml +32 -0
  15. docassert/_data/criteria/qa-test-plan.criteria.yaml +27 -0
  16. docassert/_data/criteria/raci-stakeholder.criteria.yaml +24 -0
  17. docassert/_data/criteria/release-cutover-plan.criteria.yaml +30 -0
  18. docassert/_data/criteria/risk-register.criteria.yaml +32 -0
  19. docassert/_data/criteria/rollback-plan.criteria.yaml +29 -0
  20. docassert/_data/criteria/runbook.criteria.yaml +30 -0
  21. docassert/_data/criteria/status-report.criteria.yaml +26 -0
  22. docassert/_data/criteria/test-cases.criteria.yaml +28 -0
  23. docassert/_data/criteria/user-story.criteria.yaml +32 -0
  24. docassert/_data/profiles/agile-delivery.yaml +20 -0
  25. docassert/_data/profiles/lean-startup.yaml +19 -0
  26. docassert/_data/profiles/regulated-industry.yaml +31 -0
  27. docassert/_data/schema/adr.schema.json +45 -0
  28. docassert/_data/schema/benefits-realization.schema.json +45 -0
  29. docassert/_data/schema/brd.schema.json +45 -0
  30. docassert/_data/schema/business-case.schema.json +45 -0
  31. docassert/_data/schema/charter.schema.json +84 -0
  32. docassert/_data/schema/data-migration-plan.schema.json +45 -0
  33. docassert/_data/schema/frnfr.schema.json +45 -0
  34. docassert/_data/schema/hypercare-plan.schema.json +45 -0
  35. docassert/_data/schema/post-implementation-review.schema.json +45 -0
  36. docassert/_data/schema/prd.schema.json +45 -0
  37. docassert/_data/schema/project.schema.json +32 -0
  38. docassert/_data/schema/qa-test-plan.schema.json +45 -0
  39. docassert/_data/schema/raci-stakeholder.schema.json +45 -0
  40. docassert/_data/schema/release-cutover-plan.schema.json +45 -0
  41. docassert/_data/schema/risk-register.schema.json +45 -0
  42. docassert/_data/schema/rollback-plan.schema.json +45 -0
  43. docassert/_data/schema/runbook.schema.json +45 -0
  44. docassert/_data/schema/status-report.schema.json +58 -0
  45. docassert/_data/schema/test-cases.schema.json +45 -0
  46. docassert/_data/schema/user-story.schema.json +45 -0
  47. docassert/_data/templates/adr.template.md +17 -0
  48. docassert/_data/templates/benefits-realization.template.md +25 -0
  49. docassert/_data/templates/brd.template.md +22 -0
  50. docassert/_data/templates/business-case.template.md +27 -0
  51. docassert/_data/templates/charter.template.md +46 -0
  52. docassert/_data/templates/data-migration-plan.template.md +35 -0
  53. docassert/_data/templates/frnfr.template.md +19 -0
  54. docassert/_data/templates/hypercare-plan.template.md +29 -0
  55. docassert/_data/templates/post-implementation-review.template.md +31 -0
  56. docassert/_data/templates/prd.template.md +23 -0
  57. docassert/_data/templates/project.template.md +17 -0
  58. docassert/_data/templates/qa-test-plan.template.md +31 -0
  59. docassert/_data/templates/raci-stakeholder.template.md +21 -0
  60. docassert/_data/templates/release-cutover-plan.template.md +28 -0
  61. docassert/_data/templates/risk-register.template.md +18 -0
  62. docassert/_data/templates/rollback-plan.template.md +24 -0
  63. docassert/_data/templates/runbook.template.md +28 -0
  64. docassert/_data/templates/status-report.template.md +27 -0
  65. docassert/_data/templates/test-cases.template.md +17 -0
  66. docassert/_data/templates/user-story.template.md +17 -0
  67. docassert/cli.py +291 -0
  68. docassert/config.py +104 -0
  69. docassert/consistency.py +167 -0
  70. docassert/graph.py +68 -0
  71. docassert/loader.py +116 -0
  72. docassert/models.py +99 -0
  73. docassert/profiles.py +111 -0
  74. docassert/projects.py +49 -0
  75. docassert/report.py +83 -0
  76. docassert/rtm.py +70 -0
  77. docassert/semantic.py +124 -0
  78. docassert/status.py +538 -0
  79. docassert/structural.py +406 -0
  80. docassert-0.1.0.dist-info/METADATA +125 -0
  81. docassert-0.1.0.dist-info/RECORD +86 -0
  82. docassert-0.1.0.dist-info/WHEEL +5 -0
  83. docassert-0.1.0.dist-info/entry_points.txt +2 -0
  84. docassert-0.1.0.dist-info/licenses/LICENSE +201 -0
  85. docassert-0.1.0.dist-info/licenses/NOTICE +4 -0
  86. 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,6 @@
1
+ import sys
2
+
3
+ from .cli import main
4
+
5
+ if __name__ == "__main__":
6
+ sys.exit(main())
@@ -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/.