requirements-as-code 0.4.2__tar.gz → 0.5.2__tar.gz

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 (116) hide show
  1. {requirements_as_code-0.4.2/requirements_as_code.egg-info → requirements_as_code-0.5.2}/PKG-INFO +156 -1
  2. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/README.md +156 -1
  3. requirements_as_code-0.5.2/planning/adr/adr-016-relationships-as-structural-references.md +508 -0
  4. {requirements_as_code-0.4.2/planning/roadmap → requirements_as_code-0.5.2/planning/roadmap/archive}/v0.7-prompts.md +2 -0
  5. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/roadmap/v0.5.0-artifact-improvement.md +5 -0
  6. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/roadmap/v0.5.1-guided-improvement.md +29 -9
  7. requirements_as_code-0.5.2/planning/roadmap/v0.5.2-schema.md +546 -0
  8. requirements_as_code-0.5.2/planning/roadmap/v0.6.0-roadmap-artifacts.md +422 -0
  9. requirements_as_code-0.5.2/planning/roadmap/v0.6.1-roadmap-improvement.md +380 -0
  10. requirements_as_code-0.5.2/planning/roadmap/v0.6.2-prompt-artifact.md +380 -0
  11. requirements_as_code-0.5.2/planning/roadmap/v0.7.0-relationship-metadata.md +523 -0
  12. requirements_as_code-0.5.2/planning/roadmap/v0.7.1-relationship-inspection.md +415 -0
  13. requirements_as_code-0.5.2/planning/roadmap/v0.7.2-relationship-validation.md +398 -0
  14. requirements_as_code-0.5.2/planning/roadmap/v0.8.0-explorer-foundation.md +360 -0
  15. requirements_as_code-0.5.2/planning/roadmap/v0.8.1-explorer-experience.md +293 -0
  16. requirements_as_code-0.5.2/planning/roadmap/v0.8.2-knowledge-operations.md +290 -0
  17. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/rac/artifacts.py +61 -0
  18. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/rac/classification.py +24 -2
  19. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/rac/cli.py +113 -9
  20. requirements_as_code-0.5.2/rac/improve.py +101 -0
  21. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/rac/outputs.py +139 -0
  22. requirements_as_code-0.5.2/rac/schema.py +152 -0
  23. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2/requirements_as_code.egg-info}/PKG-INFO +156 -1
  24. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/requirements_as_code.egg-info/SOURCES.txt +17 -4
  25. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/test_cli.py +1 -0
  26. requirements_as_code-0.5.2/tests/test_improve.py +325 -0
  27. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/test_inspect.py +9 -3
  28. requirements_as_code-0.5.2/tests/test_schema.py +199 -0
  29. requirements_as_code-0.4.2/planning/roadmap/v0.6-roadmaps.md +0 -33
  30. requirements_as_code-0.4.2/planning/roadmap/v0.8-explorer.md +0 -392
  31. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/.github/workflows/python-publish.yml +0 -0
  32. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/.gitignore +0 -0
  33. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/LICENSE +0 -0
  34. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/examples/example_dashboard_v1.md +0 -0
  35. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/examples/example_dashboard_v2.md +0 -0
  36. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-001-markdown-first.md +0 -0
  37. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-002-ai-optional.md +0 -0
  38. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-003-structured-outputs-first.md +0 -0
  39. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-004-artifact-model.md +0 -0
  40. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-005-cli-first.md +0 -0
  41. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-006-ingest-over-rewrite.md +0 -0
  42. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-007-json-contract-stability.md +0 -0
  43. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-008-agent-ready-architecture.md +0 -0
  44. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-009-ai-assisted-development.md +0 -0
  45. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-010-documents-are-not-artifacts.md +0 -0
  46. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-011-file-first-pipeline.md +0 -0
  47. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-012-open-core-strategy.md +0 -0
  48. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-013-leverage-existing-source-control-systems.md +0 -0
  49. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-014-viewer-agnostic-knowledge-artifacts.md +0 -0
  50. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/adr/adr-015-explorer-as-consumer.md +0 -0
  51. /requirements_as_code-0.4.2/planning/adr/adr-016-rac-managed-knowledge-not-work.md → /requirements_as_code-0.5.2/planning/adr/adr-017-rac-managed-knowledge-not-work.md +0 -0
  52. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/future/v1.0-workspace-analysis.md +0 -0
  53. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/future/v1.1-review-engine.md +0 -0
  54. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/future/v1.2-mcp-server.md +0 -0
  55. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/future/v1.4-claude-skills.md +0 -0
  56. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/future/v1.4-python-sdk.md +0 -0
  57. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/roadmap/archive/v0.5-decisions.md +0 -0
  58. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/roadmap/v0.2-stats.md +0 -0
  59. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/roadmap/v0.3-ingest.md +0 -0
  60. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/roadmap/v0.3.1-formats.md +0 -0
  61. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/roadmap/v0.4-inspect.md +0 -0
  62. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/roadmap/v0.4.1-expansion.md +0 -0
  63. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/roadmap/v0.4.1-inspect-expansion.md +0 -0
  64. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/planning/roadmap/v0.4.2-decision-metadata.md +0 -0
  65. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/pyproject.toml +0 -0
  66. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/rac/__init__.py +0 -0
  67. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/rac/diff.py +0 -0
  68. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/rac/fs.py +0 -0
  69. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/rac/ingest.py +0 -0
  70. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/rac/inspect.py +0 -0
  71. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/rac/models.py +0 -0
  72. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/rac/parser.py +0 -0
  73. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/rac/stats.py +0 -0
  74. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/rac/validate.py +0 -0
  75. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/requirements_as_code.egg-info/dependency_links.txt +0 -0
  76. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/requirements_as_code.egg-info/entry_points.txt +0 -0
  77. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/requirements_as_code.egg-info/requires.txt +0 -0
  78. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/requirements_as_code.egg-info/top_level.txt +0 -0
  79. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/setup.cfg +0 -0
  80. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/conftest.py +0 -0
  81. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/decision/bad_category.md +0 -0
  82. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/decision/bad_status.md +0 -0
  83. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/decision/minimal.md +0 -0
  84. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/decision/portfolio/01_accepted_arch.md +0 -0
  85. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/decision/portfolio/02_proposed_process.md +0 -0
  86. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/decision/portfolio/03_no_metadata.md +0 -0
  87. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/decision/with_metadata.md +0 -0
  88. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/diff/new.md +0 -0
  89. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/diff/old.md +0 -0
  90. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/ingest/sample.md +0 -0
  91. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/inspect/ambiguous.md +0 -0
  92. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/inspect/decision.md +0 -0
  93. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/inspect/nested/another_requirement.md +0 -0
  94. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/inspect/requirement.md +0 -0
  95. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/invalid/duplicate_ids.md +0 -0
  96. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/invalid/empty_req_text.md +0 -0
  97. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/invalid/malformed_id.md +0 -0
  98. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/invalid/missing_id.md +0 -0
  99. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/invalid/missing_problem.md +0 -0
  100. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/invalid/missing_requirements.md +0 -0
  101. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/invalid/missing_title.md +0 -0
  102. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/invalid/multiple_titles.md +0 -0
  103. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/portfolio/broken.md +0 -0
  104. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/portfolio/feature_a.md +0 -0
  105. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/portfolio/feature_b.md +0 -0
  106. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/portfolio/sub/feature_c.md +0 -0
  107. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/valid/bullet_requirements.md +0 -0
  108. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/valid/feature.md +0 -0
  109. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/valid/minimal.md +0 -0
  110. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/fixtures/valid/warnings.md +0 -0
  111. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/test_decision_metadata.py +0 -0
  112. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/test_diff.py +0 -0
  113. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/test_ingest.py +0 -0
  114. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/test_parser.py +0 -0
  115. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/test_stats.py +0 -0
  116. {requirements_as_code-0.4.2 → requirements_as_code-0.5.2}/tests/test_validate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: requirements-as-code
3
- Version: 0.4.2
3
+ Version: 0.5.2
4
4
  Summary: RAC — lint and diff product requirements written in Markdown.
5
5
  Author: tcballard
6
6
  License-Expression: MIT
@@ -616,6 +616,161 @@ usage errors (file not found, or a non-Markdown file — convert it with
616
616
 
617
617
  ---
618
618
 
619
+ ## Improve
620
+
621
+ Where `inspect` tells you *what an artifact is*, `improve` tells you *what to add
622
+ next* and how to think about completing it. It reports the required and
623
+ recommended sections an artifact is missing, plus schema-defined guidance for
624
+ those sections — **deterministically, from the schema, with no AI** (ADR-002).
625
+ `improve` is **advisory and read-only**: it never modifies your files and never
626
+ generates content beyond `_TODO_` placeholders and guidance comments.
627
+
628
+ ```bash
629
+ rac improve requirement.md
630
+ rac improve requirement.md --template # Markdown skeletons for missing sections
631
+ rac improve requirement.md --json
632
+ cat requirement.md | rac improve - # stdin
633
+ rac ingest prd.docx --stdout | rac improve -
634
+ ```
635
+
636
+ Default output:
637
+
638
+ ```text
639
+ Artifact Type: Requirement
640
+
641
+ Missing Required:
642
+ (none)
643
+
644
+ Missing Recommended:
645
+ - Risks
646
+ • What could prevent successful delivery?
647
+ • What dependencies or unknowns exist?
648
+ - Assumptions
649
+ • What are you assuming to be true?
650
+ • What would change the approach if it turned out false?
651
+ ```
652
+
653
+ `--template` turns the gaps into a ready-to-paste skeleton (required sections
654
+ first, then recommended), with deterministic guidance comments per section:
655
+
656
+ ```markdown
657
+ ## Risks
658
+
659
+ _TODO_
660
+
661
+ <!-- What could prevent successful delivery? -->
662
+ <!-- What dependencies or unknowns exist? -->
663
+ ```
664
+
665
+ So you can go straight from `rac inspect requirement.md` to
666
+ `rac improve requirement.md --template` without consulting any documentation.
667
+
668
+ `--json` returns a stable contract (ADR-007):
669
+
670
+ ```json
671
+ {
672
+ "type": "requirement",
673
+ "missing_required": [],
674
+ "missing_recommended": ["risks", "assumptions"],
675
+ "guidance": {
676
+ "risks": [
677
+ "What could prevent successful delivery?",
678
+ "What dependencies or unknowns exist?"
679
+ ],
680
+ "assumptions": [
681
+ "What are you assuming to be true?",
682
+ "What would change the approach if it turned out false?"
683
+ ]
684
+ }
685
+ }
686
+ ```
687
+
688
+ `improve` generates suggestions for artifact types with complete schema guidance
689
+ coverage. Today that means **Requirement** and **Decision** artifacts. Unknown
690
+ documents return a short explanatory message instead. Future artifact types do
691
+ not become improvable until their schemas define guidance for every required and
692
+ recommended section.
693
+
694
+ Guidance is informational metadata only: it does not influence classification,
695
+ validation, confidence scoring, statistics, or repository analysis.
696
+
697
+ `improve` is advisory: it exits `0` for any completed analysis (with or without
698
+ suggestions) and `2` for usage errors. The presence of suggestions never changes
699
+ the exit code.
700
+
701
+ ---
702
+
703
+ ## Schema
704
+
705
+ Inspect RAC's registered artifact schemas without creating a file.
706
+
707
+ ```bash
708
+ rac schema --list
709
+ rac schema --list --json
710
+ rac schema requirement
711
+ rac schema decision --json
712
+ rac schema requirement --template
713
+ ```
714
+
715
+ `rac schema <type>` shows the full schema reference: required, recommended, and
716
+ optional sections; descriptions; guidance; and metadata values where applicable.
717
+
718
+ ```text
719
+ Artifact Type: Decision
720
+
721
+ Required Sections:
722
+ - Context
723
+ - Decision
724
+ - Consequences
725
+
726
+ Recommended Sections:
727
+ - Status
728
+ - Category
729
+ - Alternatives Considered
730
+
731
+ Optional Sections:
732
+ - Supersedes
733
+
734
+ Metadata Fields:
735
+ - Status: Proposed | Accepted | Superseded | Deprecated
736
+ - Category: Architecture | Product | Process | Technical | Other
737
+ ```
738
+
739
+ `--json` returns the same schema data as grouped arrays and maps:
740
+
741
+ ```json
742
+ {
743
+ "type": "requirement",
744
+ "required": ["problem", "requirements"],
745
+ "recommended": ["success_metrics", "risks", "assumptions"],
746
+ "optional": [],
747
+ "descriptions": {},
748
+ "guidance": {},
749
+ "metadata": {}
750
+ }
751
+ ```
752
+
753
+ `--template` emits a structurally valid Markdown starter. Templates are useful
754
+ starting points, not finished artifacts: users still replace TODO text with
755
+ meaningful product knowledge.
756
+
757
+ ```bash
758
+ rac schema requirement --template > requirement.md
759
+ rac schema decision --template > decision.md
760
+ ```
761
+
762
+ Generated templates are validation-safe:
763
+
764
+ ```bash
765
+ rac schema requirement --template | rac validate -
766
+ rac schema decision --template | rac validate -
767
+ ```
768
+
769
+ Unknown schemas fail with exit code `2` and list available schemas. Only
770
+ registered schemas are supported; custom schemas are out of scope.
771
+
772
+ ---
773
+
619
774
  ## Review (Planned)
620
775
 
621
776
  AI-assisted product review.
@@ -576,6 +576,161 @@ usage errors (file not found, or a non-Markdown file — convert it with
576
576
 
577
577
  ---
578
578
 
579
+ ## Improve
580
+
581
+ Where `inspect` tells you *what an artifact is*, `improve` tells you *what to add
582
+ next* and how to think about completing it. It reports the required and
583
+ recommended sections an artifact is missing, plus schema-defined guidance for
584
+ those sections — **deterministically, from the schema, with no AI** (ADR-002).
585
+ `improve` is **advisory and read-only**: it never modifies your files and never
586
+ generates content beyond `_TODO_` placeholders and guidance comments.
587
+
588
+ ```bash
589
+ rac improve requirement.md
590
+ rac improve requirement.md --template # Markdown skeletons for missing sections
591
+ rac improve requirement.md --json
592
+ cat requirement.md | rac improve - # stdin
593
+ rac ingest prd.docx --stdout | rac improve -
594
+ ```
595
+
596
+ Default output:
597
+
598
+ ```text
599
+ Artifact Type: Requirement
600
+
601
+ Missing Required:
602
+ (none)
603
+
604
+ Missing Recommended:
605
+ - Risks
606
+ • What could prevent successful delivery?
607
+ • What dependencies or unknowns exist?
608
+ - Assumptions
609
+ • What are you assuming to be true?
610
+ • What would change the approach if it turned out false?
611
+ ```
612
+
613
+ `--template` turns the gaps into a ready-to-paste skeleton (required sections
614
+ first, then recommended), with deterministic guidance comments per section:
615
+
616
+ ```markdown
617
+ ## Risks
618
+
619
+ _TODO_
620
+
621
+ <!-- What could prevent successful delivery? -->
622
+ <!-- What dependencies or unknowns exist? -->
623
+ ```
624
+
625
+ So you can go straight from `rac inspect requirement.md` to
626
+ `rac improve requirement.md --template` without consulting any documentation.
627
+
628
+ `--json` returns a stable contract (ADR-007):
629
+
630
+ ```json
631
+ {
632
+ "type": "requirement",
633
+ "missing_required": [],
634
+ "missing_recommended": ["risks", "assumptions"],
635
+ "guidance": {
636
+ "risks": [
637
+ "What could prevent successful delivery?",
638
+ "What dependencies or unknowns exist?"
639
+ ],
640
+ "assumptions": [
641
+ "What are you assuming to be true?",
642
+ "What would change the approach if it turned out false?"
643
+ ]
644
+ }
645
+ }
646
+ ```
647
+
648
+ `improve` generates suggestions for artifact types with complete schema guidance
649
+ coverage. Today that means **Requirement** and **Decision** artifacts. Unknown
650
+ documents return a short explanatory message instead. Future artifact types do
651
+ not become improvable until their schemas define guidance for every required and
652
+ recommended section.
653
+
654
+ Guidance is informational metadata only: it does not influence classification,
655
+ validation, confidence scoring, statistics, or repository analysis.
656
+
657
+ `improve` is advisory: it exits `0` for any completed analysis (with or without
658
+ suggestions) and `2` for usage errors. The presence of suggestions never changes
659
+ the exit code.
660
+
661
+ ---
662
+
663
+ ## Schema
664
+
665
+ Inspect RAC's registered artifact schemas without creating a file.
666
+
667
+ ```bash
668
+ rac schema --list
669
+ rac schema --list --json
670
+ rac schema requirement
671
+ rac schema decision --json
672
+ rac schema requirement --template
673
+ ```
674
+
675
+ `rac schema <type>` shows the full schema reference: required, recommended, and
676
+ optional sections; descriptions; guidance; and metadata values where applicable.
677
+
678
+ ```text
679
+ Artifact Type: Decision
680
+
681
+ Required Sections:
682
+ - Context
683
+ - Decision
684
+ - Consequences
685
+
686
+ Recommended Sections:
687
+ - Status
688
+ - Category
689
+ - Alternatives Considered
690
+
691
+ Optional Sections:
692
+ - Supersedes
693
+
694
+ Metadata Fields:
695
+ - Status: Proposed | Accepted | Superseded | Deprecated
696
+ - Category: Architecture | Product | Process | Technical | Other
697
+ ```
698
+
699
+ `--json` returns the same schema data as grouped arrays and maps:
700
+
701
+ ```json
702
+ {
703
+ "type": "requirement",
704
+ "required": ["problem", "requirements"],
705
+ "recommended": ["success_metrics", "risks", "assumptions"],
706
+ "optional": [],
707
+ "descriptions": {},
708
+ "guidance": {},
709
+ "metadata": {}
710
+ }
711
+ ```
712
+
713
+ `--template` emits a structurally valid Markdown starter. Templates are useful
714
+ starting points, not finished artifacts: users still replace TODO text with
715
+ meaningful product knowledge.
716
+
717
+ ```bash
718
+ rac schema requirement --template > requirement.md
719
+ rac schema decision --template > decision.md
720
+ ```
721
+
722
+ Generated templates are validation-safe:
723
+
724
+ ```bash
725
+ rac schema requirement --template | rac validate -
726
+ rac schema decision --template | rac validate -
727
+ ```
728
+
729
+ Unknown schemas fail with exit code `2` and list available schemas. Only
730
+ registered schemas are supported; custom schemas are out of scope.
731
+
732
+ ---
733
+
579
734
  ## Review (Planned)
580
735
 
581
736
  AI-assisted product review.
@@ -638,4 +793,4 @@ The project is intentionally focused on one goal:
638
793
 
639
794
  # License
640
795
 
641
- MIT
796
+ MIT