Skip to content

Commit 95e8cb7

Browse files
committed
First two ADRs, and repo setup
1 parent 9d70df5 commit 95e8cb7

8 files changed

Lines changed: 449 additions & 1 deletion

File tree

.config/lingo.dic

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
1
2+
00301J
3+
+
4+
ABN
5+
ADR
6+
ADRs
7+
Agilab
8+
CD
9+
CRICOS
10+
Curtin
11+
EECMS
12+
IP
13+
I.P.
14+
Kubernetes
15+
LanguageTool
16+
MermaidJS
17+
PlantUML
18+
PRV12158
19+
TEQSA
20+
Vandenberg
21+
agentic
22+
attrited
23+
auditable
24+
componentry
25+
deployable
26+
hunspell
27+
fred
28+
integrations
29+
interdependencies
30+
k8s
31+
k3s
32+
lifecycle
33+
mise
34+
modularity
35+
nlprules
36+
npm
37+
observability
38+
onboarding
39+
organisation
40+
pluggable
41+
respawned
42+
reusability
43+
topologies
44+
traceability
45+
usernames
46+
versioned
47+
versioning
48+
workflows

.config/spellcheck.toml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# Also take into account developer comments
2+
dev_comments = false
3+
4+
# Skip the README.md file as defined in the cargo manifest
5+
skip_readme = false
6+
7+
[Hunspell]
8+
# lang and name of `.dic` file
9+
lang = "en_GB"
10+
11+
# Additional search paths, which take precedence over the default
12+
# os specific search dirs, searched in order, defaults last
13+
search_dirs = ["."]
14+
15+
# Adds additional dictionaries, can be specified as
16+
# absolute paths or relative in the search dirs (in this order).
17+
# Relative paths are resolved relative to the configuration file
18+
# which is used.
19+
# Refer to `man 5 hunspell`
20+
# or https://www.systutorials.com/docs/linux/man/4-hunspell/#lbAE
21+
# on how to define a custom dictionary file.
22+
extra_dictionaries = ["lingo.dic"]
23+
24+
# If set to `true`, the OS specific default search paths
25+
# are skipped and only explicitly specified ones are used.
26+
skip_os_lookups = true
27+
28+
# Use the builtin dictionaries if none were found in
29+
# in the configured lookup paths.
30+
# Usually combined with `skip_os_lookups=true`
31+
# to enforce the `builtin` usage for consistent
32+
# results across distributions and CI runs.
33+
# Setting this will still use the dictionaries
34+
# specified in `extra_dictionaries = [..]`
35+
# for topic specific lingo.
36+
use_builtin = true
37+
38+
39+
[Hunspell.quirks]
40+
# Transforms words that are provided by the tokenizer
41+
# into word fragments based on the capture groups which are to
42+
# be checked.
43+
# If no capture groups are present, the matched word is whitelisted.
44+
transform_regex = ["^'([^\\s])'$", "^[0-9]+x$"]
45+
46+
allowlist = ["(?:__|[*#])|\\[(.*?)\\]\\(.*?\\)"]
47+
48+
# Accepts `alphabeta` variants if the checker provides a replacement suggestion
49+
# of `alpha-beta`.
50+
allow_concatenation = true
51+
52+
# And the counterpart, which accepts words with dashes, when the suggestion has
53+
# recommendations without the dashes. This is less common.
54+
allow_dashed = false
55+
56+
# Check the expressions in the footnote references. By default this is turned on
57+
# to remain backwards compatible but disabling it could be particularly useful
58+
# when one uses abbreviations instead of numbers as footnote references. For
59+
# instance by default the fragment `hello[^xyz]` would be spellchecked as
60+
# `helloxyz` which is obviously a misspelled word, but by turning this check
61+
# off, it will skip validating the reference altogether and will only check the
62+
# word `hello`.
63+
check_footnote_references = false
64+
65+
[NlpRules]
66+
# Allows the user to override the default included
67+
# exports of LanguageTool, with other custom
68+
# languages
69+
70+
# override_rules = "/path/to/rules_binencoded.bin"
71+
# override_tokenizer = "/path/to/tokenizer_binencoded.bin"
72+
73+
[Reflow]
74+
# Reflows doc comments to adhere to adhere to a given maximum line width limit.
75+
max_line_length = 120

.editorconfig

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
root = true
2+
3+
[*]
4+
end_of_line = lf
5+
insert_final_newline = true
6+
indent_size = 2
7+
indent_style = space
8+
max_line_length = 120
9+
trim_trailing_whitespace = true
10+
11+
# Markdown files can have flexible indentation for lists
12+
[*.md]
13+
indent_size = unset

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.DS_Store

.mise.toml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
[tools]
2+
"cargo:cargo-spellcheck" = "latest"
3+
"cargo:topgrade" = "latest"
4+
editorconfig-checker = "latest"
5+
harper-cli = "latest"
6+
ollama = "latest"
7+
rust = "latest"
8+
typos = "latest"
9+
10+
[tasks.typos]
11+
run = "typos"
12+
13+
[tasks.cargo-spellcheck]
14+
run = "cargo spellcheck check"
15+
16+
[tasks.harper]
17+
run = "harper-cli lint --user-dict-path .config/lingo.dic --dialect au --ignore OrthographicConsistency,UnclosedQuotes,UseTitleCase *.md ADR/R1/*.md"
18+
19+
[tasks.check]
20+
depends = ["typos", "cargo-spellcheck", "harper"]

ADR/R1/0001-decisions.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# ADR-0001: Require architectural decision records for all development
2+
3+
## Status
4+
5+
Proposed
6+
7+
## Context
8+
9+
The Curtin project requires a systematic approach to documenting architectural and significant technical decisions.
10+
Without a formal decision-making framework, knowledge about why certain architectural choices were made is lost over
11+
time, making it difficult for current and future team members to understand the rationale behind the system's design.
12+
13+
Additionally, architectural decisions often involve intellectual property (IP) considerations related to new components
14+
and third-party integrations.
15+
16+
Having a formal review process allows IP matters to be identified and assessed before significant IP is created,
17+
reducing legal and licensing risks.
18+
19+
## Decision
20+
21+
We will require that all significant architectural decisions, system design choices, and technical direction changes be
22+
documented using Architectural Decision Records (ADRs).
23+
24+
An ADR is a short text document that captures a single architectural decision in a specific format.
25+
26+
## Consequences
27+
28+
### Positive
29+
30+
- **Knowledge Preservation**: Decision rationale is preserved for future reference and context
31+
- **Communication**: Ensures all stakeholders understand the reasoning behind major decisions
32+
- **Consistency**: Establishes a uniform approach to decision-making across the project
33+
- **Trace-ability**: Creates an auditable record of decisions and their evolution
34+
- **Onboarding**: New team members can quickly understand architectural choices and their justifications
35+
- **IP Management**: Enables intellectual property matters related to new proposed components to be reviewed
36+
and addressed before IP is created, reducing legal and licensing risks
37+
- **Research Reporting**: As a research project, ADRs capture key decisions throughout the project lifecycle
38+
that can be referenced and highlighted in quarterly reports
39+
40+
### Negative
41+
42+
- **Overhead**: Requires commitment to documenting decisions in addition to implementation
43+
- **Time Investment**: Initial setup and learning curve for the ADR format and process
44+
- **Maintenance**: Deprecated decisions must be marked as superseded to prevent confusion
45+
46+
## Implementation Notes
47+
48+
- Each ADR will be numbered sequentially starting from 0001, with a short name given to each.
49+
- ADRs should follow the standard template with Status, Context, Decision, Author, and Date.
50+
- ADRs may include other sections after those sections, such as References, Alternatives, Consequences,
51+
Implementation Notes, etc.
52+
- Status values: Draft, Proposed, Accepted, Rejected, Deprecated, Superseded
53+
- Team members should review and discuss Proposed ADRs before they are Accepted or Rejected.
54+
- ADR in Draft status are incomplete, and should not be considered ready for consideration.
55+
- Decisions involving private or sensitive information should not be included in public ADRs.
56+
- Public ADRs should define public interfaces and contracts that enable private components to be constructed
57+
in separate private repositories.
58+
59+
## Author
60+
61+
John Vandenberg
62+
63+
## Date
64+
65+
18 March 2026

0 commit comments

Comments
 (0)