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
@@ -0,0 +1,45 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "RACI / Stakeholder Register 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": "raci-stakeholder"
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": "Release / Cutover 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": "release-cutover-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": "Risk Register 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": "risk-register"
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": "Rollback 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": "rollback-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": "Runbook 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": "runbook"
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,58 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Status Report frontmatter",
4
+ "type": "object",
5
+ "required": [
6
+ "kind",
7
+ "id",
8
+ "project",
9
+ "title",
10
+ "owner",
11
+ "period",
12
+ "rag",
13
+ "status"
14
+ ],
15
+ "additionalProperties": true,
16
+ "properties": {
17
+ "kind": {
18
+ "const": "status-report"
19
+ },
20
+ "id": {
21
+ "type": "string",
22
+ "pattern": "^[A-Z]{2,6}-[a-z0-9][a-z0-9-]*$",
23
+ "description": "Stable id, <CODE>-<slug> (e.g. AUR-brd). The CODE namespaces it to the owning project. Unique across documents/."
24
+ },
25
+ "title": {
26
+ "type": "string",
27
+ "minLength": 3
28
+ },
29
+ "owner": {
30
+ "type": "string",
31
+ "minLength": 2
32
+ },
33
+ "period": {
34
+ "type": "string",
35
+ "format": "date"
36
+ },
37
+ "rag": {
38
+ "enum": [
39
+ "green",
40
+ "amber",
41
+ "red"
42
+ ]
43
+ },
44
+ "status": {
45
+ "enum": [
46
+ "draft",
47
+ "proposed",
48
+ "approved",
49
+ "baselined"
50
+ ]
51
+ },
52
+ "project": {
53
+ "type": "string",
54
+ "pattern": "^PRJ-\\d{3,}-[A-Z]{2,6}$",
55
+ "description": "Owning project's canonical id, PRJ-NNN-CODE (e.g. PRJ-001-AUR)."
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Test Cases 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": "test-cases"
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": "User Stories 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": "user-story"
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,17 @@
1
+ ---
2
+ kind: adr
3
+ id: my-adr-log
4
+ title: My Architecture Decision Log
5
+ owner: jane.doe
6
+ status: draft
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ <!-- What area these decisions cover. -->
12
+
13
+ ## Decisions
14
+
15
+ <!-- Each decision optionally affects a requirement and MUST declare a Status. -->
16
+
17
+ - **ADR-001** (affects: FR-001): <!-- title -->. Status: accepted. Context: <!-- … -->. Decision: <!-- … -->. Consequences: <!-- … -->.
@@ -0,0 +1,25 @@
1
+ ---
2
+ kind: benefits-realization
3
+ id: my-benefits
4
+ title: My Benefits Realization Plan
5
+ owner: jane.doe
6
+ status: draft
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ <!-- Which benefits this tracks and against which business case / charter. -->
12
+
13
+ ## Benefits
14
+
15
+ <!-- Each benefit must state a measurable target. -->
16
+
17
+ - <!-- e.g. Reduce support tickets by at least 80% within two quarters -->
18
+
19
+ ## Measurement
20
+
21
+ <!-- How and when each benefit is measured, and by whom. -->
22
+
23
+ ## Realized Value
24
+
25
+ <!-- Actuals to date against each target. -->
@@ -0,0 +1,22 @@
1
+ ---
2
+ kind: brd
3
+ id: my-brd
4
+ title: My Business Requirements Document
5
+ owner: jane.doe
6
+ status: draft # draft | proposed | approved | baselined
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ <!-- Why this initiative exists, in business terms. -->
12
+
13
+ ## Business Requirements
14
+
15
+ <!-- One bullet per requirement, each a **BR-###** item. -->
16
+
17
+ - **BR-001**: <!-- The business shall … -->
18
+ - **BR-002**: <!-- … -->
19
+
20
+ ## Out of Scope
21
+
22
+ <!-- What this explicitly does not cover. -->
@@ -0,0 +1,27 @@
1
+ ---
2
+ kind: business-case
3
+ id: my-business-case
4
+ title: My Business Case
5
+ sponsor: jane.doe
6
+ status: draft
7
+ ---
8
+
9
+ ## Problem Statement
10
+
11
+ <!-- The problem or opportunity, in business terms. -->
12
+
13
+ ## Options Considered
14
+
15
+ <!-- The options evaluated, including "do nothing". -->
16
+
17
+ ## Recommendation
18
+
19
+ <!-- The recommended option and why. -->
20
+
21
+ ## Costs
22
+
23
+ <!-- Cost estimate and basis. -->
24
+
25
+ ## Benefits
26
+
27
+ <!-- Expected benefits; tie these to the charter's success criteria. -->
@@ -0,0 +1,46 @@
1
+ ---
2
+ kind: charter
3
+ id: my-project # lowercase, hyphenated, unique across documents/
4
+ title: My Project Charter
5
+ sponsor: jane.doe # the accountable individual, not a team
6
+ budget:
7
+ amount: 500000 # a positive number
8
+ currency: USD # ISO 4217, three uppercase letters
9
+ dates:
10
+ created: 2026-01-15
11
+ target: 2026-12-31 # on or after created
12
+ status: draft # draft | proposed | approved
13
+ ---
14
+
15
+ ## Objective
16
+
17
+ <!-- One paragraph. State the outcome this project will produce and why it
18
+ matters. Be specific and measurable, not a restatement of the project name. -->
19
+
20
+ ## Success Criteria
21
+
22
+ <!-- A bulleted list. Every criterion must state a measurable threshold
23
+ (a number, percentage, currency, or date), so pass/fail is unambiguous. -->
24
+
25
+ - <!-- e.g. Onboarding p50 drops below 48 hours -->
26
+ - <!-- e.g. CSAT rises above 4.5 / 5 -->
27
+
28
+ ## Scope
29
+
30
+ <!-- What is in scope, and explicitly what is out of scope. -->
31
+
32
+ ## Milestones
33
+
34
+ <!-- A bulleted or tabular list of dated milestones. -->
35
+
36
+ - <!-- e.g. MVP — 2026-09-30 -->
37
+
38
+ ## Risks
39
+
40
+ <!-- One bullet per risk. Every risk MUST name an Owner and a Mitigation. -->
41
+
42
+ - <!-- e.g. Data migration may slip the MVP. Owner: alex.kim. Mitigation: dual-run with a manual CSV fallback. -->
43
+
44
+ ## Approval
45
+
46
+ <!-- Who approves this charter and under what conditions. -->
@@ -0,0 +1,35 @@
1
+ ---
2
+ kind: data-migration-plan
3
+ id: my-data-migration
4
+ title: My Data Migration Plan
5
+ owner: jane.doe
6
+ status: draft
7
+ ---
8
+
9
+ ## Scope
10
+
11
+ <!-- What data moves, from where to where. -->
12
+
13
+ ## Source Systems
14
+
15
+ <!-- The systems and stores data comes from. -->
16
+
17
+ ## Field Mapping
18
+
19
+ <!-- A table mapping source fields to target fields. -->
20
+
21
+ | Source field | Target field | Transform |
22
+ |---|---|---|
23
+ | src_field | target.field | <!-- transform --> |
24
+
25
+ ## Validation
26
+
27
+ <!-- How correctness is verified after migration. -->
28
+
29
+ ## Cutover
30
+
31
+ <!-- The cutover sequence. -->
32
+
33
+ ## Rollback
34
+
35
+ <!-- How to revert if the migration fails. -->
@@ -0,0 +1,19 @@
1
+ ---
2
+ kind: frnfr
3
+ id: my-frnfr
4
+ title: My Functional & Non-Functional Requirements
5
+ owner: jane.doe
6
+ status: draft
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ <!-- What this specification covers. -->
12
+
13
+ ## Functional Requirements
14
+
15
+ - **FR-001** (traces: PR-001): <!-- The system shall … -->
16
+
17
+ ## Non-Functional Requirements
18
+
19
+ - **NFR-001** (traces: PR-001): <!-- The system shall … (performance, security, …) -->
@@ -0,0 +1,29 @@
1
+ ---
2
+ kind: hypercare-plan
3
+ id: my-hypercare-plan
4
+ title: My Hypercare Plan
5
+ owner: jane.doe
6
+ status: draft
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ <!-- What hypercare covers and for how long. -->
12
+
13
+ ## Support Window
14
+
15
+ <!-- Dates/hours of heightened support. -->
16
+
17
+ ## Severity Levels
18
+
19
+ <!-- Definitions and response targets for SEV-1 / SEV-2 / SEV-3. -->
20
+
21
+ ## Escalation
22
+
23
+ <!-- Who is paged and when. -->
24
+
25
+ ## Exit Criteria
26
+
27
+ <!-- Each exit criterion must state a measurable threshold. -->
28
+
29
+ - <!-- e.g. fewer than 2 SEV-2 incidents over 5 consecutive days -->
@@ -0,0 +1,31 @@
1
+ ---
2
+ kind: post-implementation-review
3
+ id: my-pir
4
+ title: My Post-Implementation Review
5
+ owner: jane.doe
6
+ status: draft
7
+ ---
8
+
9
+ ## Summary
10
+
11
+ <!-- What was delivered and the overall verdict. -->
12
+
13
+ ## Outcomes vs Objectives
14
+
15
+ <!-- Actual outcomes against the charter's objective and success criteria. -->
16
+
17
+ ## What Went Well
18
+
19
+ <!-- … -->
20
+
21
+ ## What Could Improve
22
+
23
+ <!-- … -->
24
+
25
+ ## Lessons Learned
26
+
27
+ <!-- … -->
28
+
29
+ ## Follow-up Actions
30
+
31
+ <!-- Owned, dated actions arising from this review. -->
@@ -0,0 +1,23 @@
1
+ ---
2
+ kind: prd
3
+ id: my-prd
4
+ title: My Product Requirements Document
5
+ owner: jane.doe
6
+ status: draft
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ <!-- What the product does and for whom. -->
12
+
13
+ ## Product Requirements
14
+
15
+ <!-- Each requirement traces to one or more business requirements. -->
16
+
17
+ - **PR-001** (traces: BR-001): <!-- The product shall … -->
18
+
19
+ ## Acceptance Criteria
20
+
21
+ <!-- Each criterion verifies a product requirement. -->
22
+
23
+ - **AC-001** (verifies: PR-001): <!-- Given …, when …, then … -->
@@ -0,0 +1,17 @@
1
+ ---
2
+ kind: project
3
+ id: PRJ-000-XXX # PRJ-<sequence>-<CODE>; unique across all projects
4
+ code: XXX # 2–6 uppercase letters; namespaces this project's ids
5
+ name: <Project name>
6
+ sponsor: <accountable individual>
7
+ status: proposed # proposed | active | on-hold | closed
8
+ ---
9
+
10
+ ## Overview
11
+
12
+ <!-- One paragraph: what this project is and the outcome it exists to deliver.
13
+ The charter carries the detail; this anchor just establishes identity. -->
14
+
15
+ ## Scope
16
+
17
+ <!-- In scope / out of scope at the project level. -->