Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@
!/docs/explanation/repo-type-taxonomy-and-ci-focus.md
!/docs/diagrams/
!/docs/diagrams/.gitkeep
!/docs/diagrams/reusable-workflow-call-graph.mmd
!/docs/runbooks/
!/docs/runbooks/.gitkeep
!/docs/runbooks/purge-ai-attributed-history.md
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# .github

[![Repo CI](https://github.com/NWarila/.github/actions/workflows/repo-ci.yml/badge.svg)](https://github.com/NWarila/.github/actions/workflows/repo-ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

Default GitHub metadata for repositories owned by
[NWarila](https://github.com/NWarila).

Expand Down
28 changes: 28 additions & 0 deletions docs/diagrams/reusable-workflow-call-graph.mmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
flowchart TD
Consumer["Consumer repo\n(caller workflow)"]

subgraph NWarila_github ["NWarila/.github — pinned by SHA"]
codeql["reusable-codeql.yaml"]
iac["reusable-iac-security.yaml"]
scorecard["reusable-scorecard.yaml"]
release["reusable-release-please.yaml"]
automerge["reusable-auto-merge.yaml"]
hygiene["reusable-repo-hygiene.yaml"]
adrsync["reusable-org-adr-auto-sync.yaml"]
end

subgraph Drift_gates ["Drift-gate artefacts (NWarila/.github)"]
baseline["baseline-manifest.json\n(byte-identical file list)"]
adrmanifest["org-adr-manifest.json\n(ADR source-of-truth list)"]
end

Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-codeql.yaml@SHA"| codeql
Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-iac-security.yaml@SHA"| iac
Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-scorecard.yaml@SHA"| scorecard
Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-release-please.yaml@SHA"| release
Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-auto-merge.yaml@SHA"| automerge
Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-repo-hygiene.yaml@SHA"| hygiene
Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-org-adr-auto-sync.yaml@SHA"| adrsync

hygiene -->|"fetches + evaluates"| baseline
adrsync -->|"reads manifest to detect drift"| adrmanifest
40 changes: 40 additions & 0 deletions docs/explanation/repo-type-taxonomy-and-ci-focus.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,46 @@ CI focus:
- Does repo-hygiene pass against the control plane itself?
- Is public source-control hygiene clean?

## Reusable-Workflow Call Graph

The diagram below shows how a consumer repo calls the seven universal reusables
hosted in `NWarila/.github`, and how the drift-gate artefacts (`baseline-manifest.json`
and `org-adr-manifest.json`) relate to `reusable-repo-hygiene` and
`reusable-org-adr-auto-sync`.

Source: [docs/diagrams/reusable-workflow-call-graph.mmd](../diagrams/reusable-workflow-call-graph.mmd)

```mermaid
flowchart TD
Consumer["Consumer repo\n(caller workflow)"]

subgraph NWarila_github ["NWarila/.github — pinned by SHA"]
codeql["reusable-codeql.yaml"]
iac["reusable-iac-security.yaml"]
scorecard["reusable-scorecard.yaml"]
release["reusable-release-please.yaml"]
automerge["reusable-auto-merge.yaml"]
hygiene["reusable-repo-hygiene.yaml"]
adrsync["reusable-org-adr-auto-sync.yaml"]
end

subgraph Drift_gates ["Drift-gate artefacts (NWarila/.github)"]
baseline["baseline-manifest.json\n(byte-identical file list)"]
adrmanifest["org-adr-manifest.json\n(ADR source-of-truth list)"]
end

Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-codeql.yaml@SHA"| codeql
Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-iac-security.yaml@SHA"| iac
Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-scorecard.yaml@SHA"| scorecard
Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-release-please.yaml@SHA"| release
Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-auto-merge.yaml@SHA"| automerge
Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-repo-hygiene.yaml@SHA"| hygiene
Consumer -->|"uses: NWarila/.github/.github/workflows/reusable-org-adr-auto-sync.yaml@SHA"| adrsync

hygiene -->|"fetches + evaluates"| baseline
adrsync -->|"reads manifest to detect drift"| adrmanifest
```

## Practical Consequence

The same governance doctrine can produce different visible file shapes. A framework template may enforce repo hygiene through `make ci`; a data-only runner may use a standalone caller. A control plane may own reusable workflow bodies; a consumer may only own thin callers. That variation is intentional when it follows repository responsibility.