way_of_working 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/CODE_OF_CONDUCT.md +2 -2
  4. data/README.md +53 -55
  5. data/exe/way_of_working +1 -1
  6. data/lib/tasks/audit_gems.rake +2 -2
  7. data/lib/way_of_working/cli.rb +11 -115
  8. data/lib/way_of_working/configuration.rb +18 -0
  9. data/lib/way_of_working/git/repo_reader.rb +1 -3
  10. data/lib/way_of_working/paths.rb +5 -2
  11. data/lib/way_of_working/readme_badge/generators/init.rb +54 -0
  12. data/lib/way_of_working/readme_badge/github_audit_rule.rb +27 -0
  13. data/lib/way_of_working/readme_badge/paths.rb +18 -0
  14. data/lib/way_of_working/readme_badge/templates/README.md +3 -0
  15. data/lib/way_of_working/readme_badge/templates/docs/way_of_working/readme-badges.md.tt +24 -0
  16. data/lib/way_of_working/readme_badge.rb +31 -0
  17. data/lib/way_of_working/sub_commands/base.rb +20 -0
  18. data/lib/way_of_working/sub_commands/exec.rb +11 -0
  19. data/lib/way_of_working/sub_commands/init.rb +17 -0
  20. data/lib/way_of_working/sub_commands/new.rb +11 -0
  21. data/lib/way_of_working/tasks.rb +1 -1
  22. data/lib/way_of_working/version.rb +1 -1
  23. data/lib/way_of_working.rb +18 -4
  24. data/way_of_working.gemspec +4 -1
  25. metadata +60 -23
  26. data/lib/way_of_working/generators/changelog/init.rb +0 -110
  27. data/lib/way_of_working/generators/code_of_conduct/init.rb +0 -32
  28. data/lib/way_of_working/generators/decision_record/init.rb +0 -29
  29. data/lib/way_of_working/generators/decision_record/new.rb +0 -67
  30. data/lib/way_of_working/generators/linter/exec.rb +0 -77
  31. data/lib/way_of_working/generators/linter/init.rb +0 -60
  32. data/lib/way_of_working/generators/rake_tasks/init.rb +0 -47
  33. data/lib/way_of_working/sub_command_base.rb +0 -16
  34. data/lib/way_of_working/templates/.github/linters/.markdown-link-check.json +0 -13
  35. data/lib/way_of_working/templates/.github/linters/rubocop_defaults.yml +0 -55
  36. data/lib/way_of_working/templates/.github/workflows/mega-linter.yml +0 -82
  37. data/lib/way_of_working/templates/.mega-linter.yml +0 -129
  38. data/lib/way_of_working/templates/.rubocop +0 -1
  39. data/lib/way_of_working/templates/CODE_OF_CONDUCT.md.tt +0 -134
  40. data/lib/way_of_working/templates/docs/decisions/README.md +0 -7
  41. data/lib/way_of_working/templates/docs/decisions/adr-template.md.tt +0 -79
@@ -1,55 +0,0 @@
1
- ---
2
- require:
3
- - ndr_dev_support
4
-
5
- inherit_mode:
6
- merge:
7
- - Exclude
8
-
9
- AllCops:
10
- TargetRubyVersion: 2.7
11
-
12
- # Ignore rules related to templated files
13
- Layout/EmptyLines:
14
- Exclude:
15
- - "config/**/*.rb"
16
-
17
- Layout/SpaceInsideArrayLiteralBrackets:
18
- Exclude:
19
- - "config/**/*.rb"
20
-
21
- Rails/Date:
22
- Enabled: false
23
-
24
- Rails/TimeZone:
25
- Enabled: false
26
-
27
- Style/Documentation:
28
- Exclude:
29
- - "app/helpers/application_helper.rb"
30
- - "config/**/*.rb"
31
-
32
- Style/GlobalStdStream:
33
- Exclude:
34
- - "config/environments/production.rb"
35
-
36
- Style/OptionalBooleanParameter:
37
- Enabled: false
38
-
39
- Style/RedundantConstantBase:
40
- Exclude:
41
- - "config/environments/production.rb"
42
-
43
- Style/RedundantFetchBlock:
44
- Exclude:
45
- - "config/puma.rb"
46
-
47
- Style/StringLiterals:
48
- Exclude:
49
- - "config.ru"
50
- - "config/**/*.rb"
51
- - "Rakefile"
52
-
53
- Style/SymbolArray:
54
- Exclude:
55
- - "config/initializers/filter_parameter_logging.rb"
@@ -1,82 +0,0 @@
1
- ---
2
- # MegaLinter GitHub Action configuration file
3
- # More info at https://megalinter.io
4
- name: MegaLinter
5
-
6
- on:
7
- # Trigger mega-linter at every push. Action will also be visible from Pull Requests to master
8
- push: # Comment this line to trigger action only on pull-requests (not recommended if you don't pay for GH Actions)
9
- pull_request:
10
- branches: [master, main]
11
-
12
- env: # Comment env block if you do not want to apply fixes
13
- # Apply linter fixes configuration
14
- APPLY_FIXES: none # When active, APPLY_FIXES must also be defined as environment variable (in github/workflows/mega-linter.yml or other CI tool)
15
- APPLY_FIXES_EVENT: pull_request # Decide which event triggers application of fixes in a commit or a PR (pull_request, push, all)
16
- APPLY_FIXES_MODE: commit # If APPLY_FIXES is used, defines if the fixes are directly committed (commit) or posted in a PR (pull_request)
17
-
18
- concurrency:
19
- group: ${{ github.ref }}-${{ github.workflow }}
20
- cancel-in-progress: true
21
-
22
- jobs:
23
- build:
24
- name: MegaLinter
25
- runs-on: ubuntu-latest
26
- steps:
27
- # Git Checkout
28
- - name: Checkout Code
29
- uses: actions/checkout@v3
30
- with:
31
- token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
32
- fetch-depth: 0 # If you use VALIDATE_ALL_CODEBASE = true, you can remove this line to improve performances
33
-
34
- # MegaLinter
35
- - name: MegaLinter
36
- id: ml
37
- # You can override MegaLinter flavor used to have faster performances
38
- # More info at https://megalinter.io/flavors/
39
- uses: oxsecurity/megalinter@v6
40
- env:
41
- # All available variables are described in documentation
42
- # https://megalinter.io/configuration/
43
- VALIDATE_ALL_CODEBASE: true # Set ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} to validate only diff with main branch
44
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
45
- # ADD YOUR CUSTOM ENV VARIABLES HERE TO OVERRIDE VALUES OF .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY
46
-
47
- # # Upload MegaLinter artifacts
48
- # - name: Archive production artifacts
49
- # if: ${{ success() }} || ${{ failure() }}
50
- # uses: actions/upload-artifact@v3
51
- # with:
52
- # name: MegaLinter reports
53
- # path: |
54
- # megalinter-reports
55
- # mega-linter.log
56
-
57
- # # Create pull request if applicable (for now works only on PR from same repository, not from forks)
58
- # - name: Create Pull Request with applied fixes
59
- # id: cpr
60
- # if: steps.ml.outputs.has_updated_sources == 1 && (env.APPLY_FIXES_EVENT == 'all' || env.APPLY_FIXES_EVENT == github.event_name) && env.APPLY_FIXES_MODE == 'pull_request' && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository) && !contains(github.event.head_commit.message, 'skip fix')
61
- # uses: peter-evans/create-pull-request@v4
62
- # with:
63
- # token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
64
- # commit-message: "[MegaLinter] Apply linters automatic fixes"
65
- # title: "[MegaLinter] Apply linters automatic fixes"
66
- # labels: bot
67
- # - name: Create PR output
68
- # if: steps.ml.outputs.has_updated_sources == 1 && (env.APPLY_FIXES_EVENT == 'all' || env.APPLY_FIXES_EVENT == github.event_name) && env.APPLY_FIXES_MODE == 'pull_request' && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository) && !contains(github.event.head_commit.message, 'skip fix')
69
- # run: |
70
- # echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
71
- # echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
72
-
73
- # # Push new commit if applicable (for now works only on PR from same repository, not from forks)
74
- # - name: Prepare commit
75
- # if: steps.ml.outputs.has_updated_sources == 1 && (env.APPLY_FIXES_EVENT == 'all' || env.APPLY_FIXES_EVENT == github.event_name) && env.APPLY_FIXES_MODE == 'commit' && github.ref != 'refs/heads/main' && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository) && !contains(github.event.head_commit.message, 'skip fix')
76
- # run: sudo chown -Rc $UID .git/
77
- # - name: Commit and push applied linter fixes
78
- # if: steps.ml.outputs.has_updated_sources == 1 && (env.APPLY_FIXES_EVENT == 'all' || env.APPLY_FIXES_EVENT == github.event_name) && env.APPLY_FIXES_MODE == 'commit' && github.ref != 'refs/heads/main' && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository) && !contains(github.event.head_commit.message, 'skip fix')
79
- # uses: stefanzweifel/git-auto-commit-action@v4
80
- # with:
81
- # branch: ${{ github.event.pull_request.head.ref || github.head_ref || github.ref }}
82
- # commit_message: "[MegaLinter] Apply linters fixes"
@@ -1,129 +0,0 @@
1
- ---
2
- # Configuration file for MegaLinter
3
- # See all available variables at https://megalinter.io/configuration/ and in linters documentation
4
-
5
- APPLY_FIXES: none # all, none, or list of linter keys
6
- ENABLE_LINTERS: # If you use ENABLE_LINTERS variable, all other linters will be disabled by default
7
- # Languages
8
- - BASH_EXEC # in Super-Linter
9
- - BASH_SHELLCHECK # in Super-Linter
10
- - BASH_SHFMT # in Super-Linter
11
- - C_CPPLINT
12
- # - CLOJURE_CLJ_KONDO # in Super-Linter
13
- - COFFEE_COFFEELINT # in Super-Linter
14
- - CPP_CPPLINT # in Super-Linter
15
- - CSHARP_DOTNET_FORMAT # in Super-Linter
16
- - DART_DARTANALYZER # in Super-Linter
17
- - GO_GOLANGCI_LINT # in Super-Linter
18
- - GO_REVIVE
19
- # - GROOVY_NPM_GROOVY_LINT # in Super-Linter
20
- - JAVA_CHECKSTYLE # in Super-Linter
21
- - JAVA_PMD
22
- - JAVASCRIPT_ES # in Super-Linter
23
- # - JAVASCRIPT_PRETTIER
24
- - JAVASCRIPT_STANDARD # in Super-Linter
25
- - JSX_ESLINT
26
- - KOTLIN_KTLINT # in Super-Linter
27
- # - LUA_LUACHECK # in Super-Linter
28
- - MAKEFILE_CHECKMAKE
29
- # - PERL_PERLCRITIC # in Super-Linter
30
- # - PHP_PHPCS # in Super-Linter
31
- # - PHP_PHPLINT # in Super-Linter
32
- # - PHP_PHPSTAN # in Super-Linter
33
- # - PHP_PSALM # in Super-Linter
34
- # - POWERSHELL_POWERSHELL
35
- # - POWERSHELL_POWERSHELL_FORMATTER
36
- - PYTHON_BANDIT
37
- - PYTHON_BLACK # in Super-Linter
38
- - PYTHON_FLAKE8 # in Super-Linter
39
- - PYTHON_ISORT # in Super-Linter
40
- - PYTHON_MYPY
41
- - PYTHON_PYLINT # in Super-Linter
42
- - PYTHON_PYRIGHT
43
- - R_LINTR # in Super-Linter
44
- # - RAKU_RAKU # in Super-Linter
45
- # - RUBY_RUBOCOP # in Super-Linter
46
- - RUST_CLIPPY # in Super-Linter
47
- # - SALESFORCE_SFDX_SCANNER_APEX
48
- # - SALESFORCE_SFDX_SCANNER_AURA
49
- # - SALESFORCE_SFDX_SCANNER_LWC
50
- - SCALA_SCALAFIX
51
- - SQL_SQL_LINT # in Super-Linter
52
- - SQL_SQLFLUFF # in Super-Linter
53
- - SQL_TSQLLINT
54
- - SWIFT_SWIFTLINT
55
- - TSX_ESLINT
56
- - TYPESCRIPT_ES # in Super-Linter
57
- # - TYPESCRIPT_PRETTIER
58
- - TYPESCRIPT_STANDARD # in Super-Linter
59
- # - VBDOTNET_DOTNET_FORMAT
60
-
61
- # Formats
62
- - CSS_SCSS_LINT
63
- - CSS_STYLELINT # in Super-Linter
64
- - ENV_DOTENV_LINTER # in Super-Linter
65
- # - GRAPHQL_GRAPHQL_SCHEMA_LINTER
66
- # - HTML_DJLINT # Refuses to see config file
67
- - HTML_HTMLHINT # in Super-Linter
68
- - JSON_ESLINT_PLUGIN_JSONC # in Super-Linter
69
- - JSON_JSONLINT
70
- - JSON_NPM_PACKAGE_JSON_LINT
71
- # - JSON_PRETTIER
72
- - JSON_V8R
73
- # - LATEX_CHKTEX # in Super-Linter
74
- - MARKDOWN_MARKDOWNLINT # in Super-Linter
75
- - MARKDOWN_MARKDOWN_LINK_CHECK
76
- - MARKDOWN_MARKDOWN_TABLE_FORMATTER
77
- - MARKDOWN_REMARK_LINT
78
- # - PROTOBUF_PROTOLINT # in Super-Linter
79
- # - RST_RSTCHECK
80
- # - RST_RSTFMT
81
- # - RST_RST_LINT
82
- - XML_XMLLINT # in Super-Linter
83
- # - YAML_PRETTIER
84
- - YAML_V8R
85
- - YAML_YAMLLINT # in Super-Linter
86
-
87
- # Tooling
88
- - ACTION_ACTIONLINT # in Super-Linter
89
- - ANSIBLE_ANSIBLE_LINT # in Super-Linter
90
- - ARM_ARM_TTK # in Super-Linter
91
- # - BICEP_BICEP_LINTER
92
- - CLOUDFORMATION_CFN_LINT # in Super-Linter
93
- - DOCKERFILE_HADOLINT # in Super-Linter
94
- - EDITORCONFIG_EDITORCONFIG_CHECKER # in Super-Linter
95
- # - GHERKIN_GHERKIN_LINT # in Super-Linter
96
- - KUBERNETES_KUBECONFORM
97
- - KUBERNETES_KUBEVAL # in Super-Linter
98
- - OPENAPI_SPECTRAL # in Super-Linter
99
- - PUPPET_PUPPET_LINT
100
- # - SNAKEMAKE_LINT # in Super-Linter
101
- # - SNAKEMAKE_SNAKEFMT # in Super-Linter
102
- # - TEKTON_TEKTON_LINT # in Super-Linter
103
- - TERRAFORM_CHECKOV
104
- - TERRAFORM_KICS
105
- - TERRAFORM_TERRAFORM_FMT # in Super-Linter
106
- - TERRAFORM_TERRAGRUNT # in Super-Linter
107
- - TERRAFORM_TERRASCAN # in Super-Linter
108
- - TERRAFORM_TFLINT # in Super-Linter
109
-
110
- # Code quality checkers
111
- - COPYPASTE_JSCPD # in Super-Linter
112
- - REPOSITORY_CHECKOV
113
- - REPOSITORY_DEVSKIM
114
- - REPOSITORY_DUSTILOCK
115
- - REPOSITORY_GITLEAKS # in Super-Linter
116
- - REPOSITORY_GIT_DIFF
117
- - REPOSITORY_GOODCHECK
118
- - REPOSITORY_SECRETLINT
119
- - REPOSITORY_SEMGREP
120
- - REPOSITORY_SYFT
121
- - REPOSITORY_TRIVY
122
- # - SPELL_CSPELL
123
- - SPELL_MISSPELL
124
- - SPELL_PROSELINT
125
-
126
- SHOW_ELAPSED_TIME: false
127
- FILEIO_REPORTER: false
128
- FAIL_IF_MISSING_LINTER_IN_FLAVOR: true
129
- # DISABLE_ERRORS: true # Uncomment if you want MegaLinter to detect errors but not block CI to pass
@@ -1 +0,0 @@
1
- --config .github/linters/rubocop_defaults.yml
@@ -1,134 +0,0 @@
1
-
2
- # Contributor Covenant Code of Conduct
3
-
4
- ## Our Pledge
5
-
6
- We as members, contributors, and leaders pledge to make participation in our
7
- community a harassment-free experience for everyone, regardless of age, body
8
- size, visible or invisible disability, ethnicity, sex characteristics, gender
9
- identity and expression, level of experience, education, socio-economic status,
10
- nationality, personal appearance, race, caste, color, religion, or sexual
11
- identity and orientation.
12
-
13
- We pledge to act and interact in ways that contribute to an open, welcoming,
14
- diverse, inclusive, and healthy community.
15
-
16
- ## Our Standards
17
-
18
- Examples of behavior that contributes to a positive environment for our
19
- community include:
20
-
21
- * Demonstrating empathy and kindness toward other people
22
- * Being respectful of differing opinions, viewpoints, and experiences
23
- * Giving and gracefully accepting constructive feedback
24
- * Accepting responsibility and apologizing to those affected by our mistakes,
25
- and learning from the experience
26
- * Focusing on what is best not just for us as individuals, but for the overall
27
- community
28
-
29
- Examples of unacceptable behavior include:
30
-
31
- * The use of sexualized language or imagery, and sexual attention or advances of
32
- any kind
33
- * Trolling, insulting or derogatory comments, and personal or political attacks
34
- * Public or private harassment
35
- * Publishing others' private information, such as a physical or email address,
36
- without their explicit permission
37
- * Other conduct which could reasonably be considered inappropriate in a
38
- professional setting
39
-
40
- ## Enforcement Responsibilities
41
-
42
- Community leaders are responsible for clarifying and enforcing our standards of
43
- acceptable behavior and will take appropriate and fair corrective action in
44
- response to any behavior that they deem inappropriate, threatening, offensive,
45
- or harmful.
46
-
47
- Community leaders have the right and responsibility to remove, edit, or reject
48
- comments, commits, code, wiki edits, issues, and other contributions that are
49
- not aligned to this Code of Conduct, and will communicate reasons for moderation
50
- decisions when appropriate.
51
-
52
- ## Scope
53
-
54
- This Code of Conduct applies within all community spaces, and also applies when
55
- an individual is officially representing the community in public spaces.
56
- Examples of representing our community include using an official e-mail address,
57
- posting via an official social media account, or acting as an appointed
58
- representative at an online or offline event.
59
-
60
- ## Enforcement
61
-
62
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
63
- reported to the community leaders responsible for enforcement at
64
- <%= options['contact_method'] %>.
65
- All complaints will be reviewed and investigated promptly and fairly.
66
-
67
- All community leaders are obligated to respect the privacy and security of the
68
- reporter of any incident.
69
-
70
- ## Enforcement Guidelines
71
-
72
- Community leaders will follow these Community Impact Guidelines in determining
73
- the consequences for any action they deem in violation of this Code of Conduct:
74
-
75
- ### 1. Correction
76
-
77
- **Community Impact**: Use of inappropriate language or other behavior deemed
78
- unprofessional or unwelcome in the community.
79
-
80
- **Consequence**: A private, written warning from community leaders, providing
81
- clarity around the nature of the violation and an explanation of why the
82
- behavior was inappropriate. A public apology may be requested.
83
-
84
- ### 2. Warning
85
-
86
- **Community Impact**: A violation through a single incident or series of
87
- actions.
88
-
89
- **Consequence**: A warning with consequences for continued behavior. No
90
- interaction with the people involved, including unsolicited interaction with
91
- those enforcing the Code of Conduct, for a specified period of time. This
92
- includes avoiding interactions in community spaces as well as external channels
93
- like social media. Violating these terms may lead to a temporary or permanent
94
- ban.
95
-
96
- ### 3. Temporary Ban
97
-
98
- **Community Impact**: A serious violation of community standards, including
99
- sustained inappropriate behavior.
100
-
101
- **Consequence**: A temporary ban from any sort of interaction or public
102
- communication with the community for a specified period of time. No public or
103
- private interaction with the people involved, including unsolicited interaction
104
- with those enforcing the Code of Conduct, is allowed during this period.
105
- Violating these terms may lead to a permanent ban.
106
-
107
- ### 4. Permanent Ban
108
-
109
- **Community Impact**: Demonstrating a pattern of violation of community
110
- standards, including sustained inappropriate behavior, harassment of an
111
- individual, or aggression toward or disparagement of classes of individuals.
112
-
113
- **Consequence**: A permanent ban from any sort of public interaction within the
114
- community.
115
-
116
- ## Attribution
117
-
118
- This Code of Conduct is adapted from the [Contributor Covenant][homepage],
119
- version 2.1, available at
120
- [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
121
-
122
- Community Impact Guidelines were inspired by
123
- [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
124
-
125
- For answers to common questions about this code of conduct, see the FAQ at
126
- [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
127
- [https://www.contributor-covenant.org/translations][translations].
128
-
129
- [homepage]: https://www.contributor-covenant.org
130
- [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
131
- [Mozilla CoC]: https://github.com/mozilla/diversity
132
- [FAQ]: https://www.contributor-covenant.org/faq
133
- [translations]: https://www.contributor-covenant.org/translations
134
-
@@ -1,7 +0,0 @@
1
- # Decisions
2
-
3
- This directory contains decision records for the project.
4
-
5
- For new ADRs, please use [adr-template.md](adr-template.md) as basis.
6
- More information on MADR is available at <https://adr.github.io/madr/>.
7
- General information about architectural decision records is available at <https://adr.github.io/>.
@@ -1,79 +0,0 @@
1
- ---
2
- # These are optional elements. Feel free to remove any of them.
3
- status: {proposed | rejected | accepted | deprecated | … | superseded by ADR-0005 <0005-example.md>}
4
- date: <%= @decision_date %>
5
- deciders: {list everyone involved in the decision}
6
- consulted: {list everyone whose opinions are sought (typically subject-matter experts); and with whom there is a two-way communication}
7
- informed: {list everyone who is kept up-to-date on progress; and with whom there is a one-way communication}
8
- ---
9
- # <%= @title %>
10
-
11
- ## Context and Problem Statement
12
-
13
- {Describe the context and problem statement, e.g., in free form using two to three sentences or in the form of an illustrative story.
14
- You may want to articulate the problem in form of a question and add links to collaboration boards or issue management systems.}
15
-
16
- <!-- This is an optional element. Feel free to remove. -->
17
- ## Decision Drivers
18
-
19
- * {decision driver 1, e.g., a force, facing concern, …}
20
- * {decision driver 2, e.g., a force, facing concern, …}
21
- * … <!-- numbers of drivers can vary -->
22
-
23
- ## Considered Options
24
-
25
- * {title of option 1}
26
- * {title of option 2}
27
- * {title of option 3}
28
- * … <!-- numbers of options can vary -->
29
-
30
- ## Decision Outcome
31
-
32
- Chosen option: "{title of option 1}", because
33
- {justification. e.g., only option, which meets k.o. criterion decision driver | which resolves force {force} | … | comes out best (see below)}.
34
-
35
- <!-- This is an optional element. Feel free to remove. -->
36
- ### Consequences
37
-
38
- * Good, because {positive consequence, e.g., improvement of one or more desired qualities, …}
39
- * Bad, because {negative consequence, e.g., compromising one or more desired qualities, …}
40
- * … <!-- numbers of consequences can vary -->
41
-
42
- <!-- This is an optional element. Feel free to remove. -->
43
- ## Validation
44
-
45
- {describe how the implementation of/compliance with the ADR is validated. E.g., by a review or an ArchUnit test}
46
-
47
- <!-- This is an optional element. Feel free to remove. -->
48
- ## Pros and Cons of the Options
49
-
50
- ### {title of option 1}
51
-
52
- <!-- This is an optional element. Feel free to remove. -->
53
- {example | description | pointer to more information | …}
54
-
55
- * Good, because {argument a}
56
- * Good, because {argument b}
57
- <!-- use "neutral" if the given argument weights neither for good nor bad -->
58
- * Neutral, because {argument c}
59
- * Bad, because {argument d}
60
- * … <!-- numbers of pros and cons can vary -->
61
-
62
- ### {title of other option}
63
-
64
- {example | description | pointer to more information | …}
65
-
66
- * Good, because {argument a}
67
- * Good, because {argument b}
68
- * Neutral, because {argument c}
69
- * Bad, because {argument d}
70
- * …
71
-
72
- <!-- This is an optional element. Feel free to remove. -->
73
- ## More Information
74
-
75
- {You might want to provide additional evidence/confidence for the decision outcome here and/or
76
- document the team agreement on the decision and/or
77
- define when and how this decision should be realized and if/when it should be re-visited and/or
78
- how the decision is validated.
79
- Links to other decisions and resources might appear here as well.}