Artifact Registry
This page documents every artifact in the NovaTrek Architecture Platform -- what is hand-authored (source of truth), what is generated, and how each actor changes and publishes them.
Actors
| Actor | Role | Primary Artifacts |
| Solution Architect | Owns architecture metadata, API contracts, solution designs, decisions, and diagrams. Proposes and documents architectural changes. | Metadata YAML, OpenAPI specs, AsyncAPI specs, solution designs, ADRs, PlantUML diagrams, wireframes |
| Software Developer | Implements approved designs in service source code, writes tests, and proposes API contract updates when implementation reveals contract gaps. | Service source code, test suites, contract tests. Proposes changes to OpenAPI specs and metadata YAML via pull request. |
Defined Artifacts (Source of Truth)
These files are hand-authored. All generated pages, diagrams, and portal content derive from them.
| File | Defines | Edited By |
architecture/metadata/domains.yaml | Service domain groupings (9 domains), colors, team ownership | Solution Architect |
architecture/metadata/cross-service-calls.yaml | All inter-service API calls (the arrows in C4 diagrams) | Solution Architect |
architecture/metadata/data-stores.yaml | Database engine, schema, tables, and features per service | Solution Architect |
architecture/metadata/applications.yaml | Frontend applications, screens, user journey steps | Solution Architect |
architecture/metadata/actors.yaml | Human actors, frontend apps, infrastructure, and external systems | Solution Architect |
architecture/metadata/events.yaml | Kafka event producers, consumers, and topic mappings | Solution Architect |
architecture/metadata/consumers.yaml | Which frontend apps consume which services | Solution Architect |
architecture/metadata/capabilities.yaml | Business capability hierarchy (L1 domains, L2 capabilities) | Solution Architect |
architecture/metadata/capability-changelog.yaml | Per-solution capability changes (L3 emergence, decisions) | Solution Architect |
architecture/metadata/tickets.yaml | Ticket registry with service and capability mappings | Solution Architect |
architecture/metadata/pci.yaml | PCI DSS compliance scope (services, externals, data flows) | Solution Architect |
architecture/metadata/label-to-svc.yaml | Display label to service name mappings | Solution Architect |
architecture/metadata/delivery-status.yaml | Service delivery waves (GA, beta, planning) | Solution Architect |
architecture/metadata/pipeline-registry.yaml | CI/CD pipeline configurations per service | Solution Architect |
architecture/metadata/app-titles.yaml | Frontend application display names and metadata | Solution Architect |
API Contracts
| File | Defines | Edited By |
architecture/specs/*.yaml (23 files) | OpenAPI 3.x REST API contracts for every microservice | Solution Architect (primary), Software Developer (via PR) |
architecture/events/*.events.yaml (8 files) | AsyncAPI event schemas, producers, and consumers | Solution Architect (primary), Software Developer (via PR) |
Solution Designs
| File | Defines | Edited By |
architecture/solutions/_NTK-XXXXX-slug/ | Complete architecture change proposals per ticket | Solution Architect |
NTK-XXXXX-solution-design.md | Master solution document | Solution Architect |
1.requirements/ | Ticket requirements report | Solution Architect |
2.analysis/ | Plain-language explanation of the problem | Solution Architect |
3.solution/a.assumptions/ | Assumptions not yet verified | Solution Architect |
3.solution/c.capabilities/capabilities.md | Capability mappings (references changelog) | Solution Architect |
3.solution/d.decisions/decisions.md | MADR-formatted architecture decisions | Solution Architect |
3.solution/g.guidance/ | Implementation guidance for developers | Solution Architect |
3.solution/i.impacts/ | Per-service impact assessments | Solution Architect |
3.solution/r.risks/ | Risk register | Solution Architect |
3.solution/u.user.stories/ | User stories with acceptance criteria | Solution Architect |
Architecture Decisions
| File | Defines | Edited By |
decisions/ADR-*.md (9 files) | Global architecture decisions in MADR format | Solution Architect |
Hand-Authored Diagrams
| File | Defines | Edited By |
architecture/diagrams/System/*.puml | C4 System Context diagrams | Solution Architect |
architecture/diagrams/Components/*.puml | C4 Component diagrams per domain | Solution Architect |
architecture/diagrams/Sequence/*.puml | Cross-service sequence diagrams | Solution Architect |
architecture/diagrams/Tickets/*.puml | Ticket-specific diagrams | Solution Architect |
architecture/diagrams/endpoints/*.puml | Per-endpoint diagram overrides (replace generated versions) | Solution Architect |
architecture/diagrams/theme.puml | PlantUML color theme (derived from domains.yaml) | Solution Architect |
architecture/diagrams/include.puml | Shared PlantUML macros and skinparams | Solution Architect |
architecture/diagrams/templates.puml | Reusable diagram templates | Solution Architect |
Wireframes
| File | Defines | Edited By |
architecture/wireframes/web-guest-portal/*.excalidraw | Guest portal screen designs | Solution Architect |
architecture/wireframes/web-ops-dashboard/*.excalidraw | Operations dashboard screen designs | Solution Architect |
architecture/wireframes/app-guest-mobile/*.excalidraw | Mobile app screen designs | Solution Architect |
Configuration
| File | Defines | Edited By |
config/adventure-classification.yaml | 25 adventure categories mapped to UX patterns (½/3) | Solution Architect |
config/test-standards.yaml | TDD/BDD testing conventions (ADR-012) | Solution Architect |
config/sonar-project.properties | SonarQube analysis configuration | Software Developer |
Service Source Code
| File | Defines | Edited By |
services/svc-*/ (19 services) | Java/Spring Boot microservice implementations | Software Developer |
services/template/ | Service scaffold template | Software Developer |
Portal Configuration
| File | Defines | Edited By |
portal/mkdocs.yml | MkDocs Material navigation and theme | Solution Architect |
staticwebapp.config.json | Azure Static Web App routing, headers, CSP | Solution Architect |
requirements-docs.txt | Python dependencies for portal generators | Solution Architect |
Infrastructure
| File | Defines | Edited By |
infra/main.bicep | Azure Static Web App resource | Software Developer |
infra/platform.bicep | Platform-level Azure resources | Software Developer |
infra/deploy.sh | Portal deployment script | Software Developer |
infra/db/ | Database schemas and migrations | Software Developer |
Hand-Authored Documentation
| File | Defines | Edited By |
docs/*.md (20+ files) | Guides, research, phase outputs, comparisons | Solution Architect |
portal/docs/platform-operations.md | Platform operations overview | Solution Architect |
portal/docs/security/*.md | Security model documentation | Solution Architect |
portal/docs/standards/**/*.md | arc42, C4, MADR, OpenAPI, quality model standards | Solution Architect |
CI/CD Workflows
| File | Defines | Edited By |
.github/workflows/docs-deploy.yml | Portal build and deployment pipeline | Software Developer |
.github/workflows/validate-solution.yml | Solution design validation checks | Software Developer |
.github/copilot-instructions.md | AI agent instructions for this workspace | Solution Architect |
Generated Artifacts
These are produced by scripts from the defined artifacts above. Never edit generated files directly -- they will be overwritten on the next build.
Portal Pages (Markdown)
| Generator Script | Reads From | Writes To | Output |
portal/scripts/generate-swagger-pages.py | architecture/specs/*.yaml | portal/docs/services/api/ | Swagger UI HTML pages (23 services) |
portal/scripts/generate-microservice-pages.py | architecture/specs/*.yaml + all metadata YAML | portal/docs/microservices/ + puml/ + svg/ | Service pages, endpoint sequence SVGs, C4 context SVGs, ERD SVGs, enterprise diagram, event flow diagram, actor catalog |
portal/scripts/generate-application-pages.py | architecture/metadata/applications.yaml + specs | portal/docs/applications/ + puml/ + svg/ | App pages, user journey SVGs, C4 app context SVGs |
portal/scripts/generate-wireframe-pages.py | architecture/wireframes/**/*.excalidraw | portal/docs/applications/*/wireframes/ | SVG previews, HTML viewers, Markdown wrappers |
portal/scripts/generate-event-pages.py | architecture/events/*.events.yaml | portal/docs/events/ | AsyncAPI event catalog pages |
portal/scripts/generate-solution-pages.py | architecture/solutions/*/NTK-*-solution-design.md | portal/docs/solutions/ | Solution index + detail pages |
portal/scripts/generate-capability-pages.py | capabilities.yaml + capability-changelog.yaml | portal/docs/capabilities/ | Capability hierarchy + timeline pages |
portal/scripts/generate-ticket-pages.py | tickets.yaml + capability-changelog.yaml | portal/docs/tickets/ | Ticket index + detail pages |
portal/scripts/generate-topology-pages.py | architecture/calm/*.json + metadata YAML | portal/docs/topology/ | System map, dependency matrix, domain views |
portal/scripts/generate-svgs.sh | architecture/diagrams/**/*.puml | portal/docs/diagrams/svg/ | Standalone C4 and sequence diagram SVGs |
CALM Topology
| Generator Script | Reads From | Writes To | Output |
scripts/generate-calm.py | All metadata YAML + OpenAPI specs | architecture/calm/novatrek-topology.json + per-domain JSON | CALM-formatted system topology |
scripts/validate-calm.py | architecture/calm/*.json | stdout (validation report) | Topology integrity check |
| Module | Purpose |
portal/scripts/load_metadata.py | Central Python module that loads all 15 metadata YAML files into Python data structures. All generators import from this module. |
Confluence Mirror
| Generator Script | Reads From | Writes To | Output |
portal/scripts/confluence-prepare.py | portal/docs/**/*.md (generated + hand-authored) | portal/confluence/ | Confluence-compatible Markdown with mark headers |
portal/scripts/confluence-lock-pages.py | Confluence REST API | Confluence page restrictions | Edit locks on auto-generated pages |
portal/scripts/confluence-drift-check.py | Confluence REST API + portal/confluence/ | stdout (drift report) | Detects unauthorized edits |
Multi-Site Sync
| Tool | Reads From | Writes To | Output |
sites/sync-sites.py | docs/*.md + sites/manifest.yaml | portal/docs/ + sites/ai-customization/docs/ | Copies shared docs with per-site link rewrites |
MkDocs HTML Site
| Tool | Reads From | Writes To | Output |
python3 -m mkdocs build (from portal/) | All portal/docs/**/*.md | portal/site/ | Complete HTML portal |
Build Pipeline
All generation runs through a single entry point:
bash portal/scripts/generate-all.sh
This executes 11 stages in order:
- Swagger UI pages
- Microservice pages (Markdown + PlantUML + SVG)
- Application pages (Markdown + PlantUML + SVG)
- Wireframe pages (Excalidraw to SVG + HTML + Markdown)
- AsyncAPI event pages
- Solution design pages
- Business capability pages
- Ticket pages
- CALM topology generation + validation + domain subsets
- Standalone PlantUML diagram SVGs
- MkDocs build + asset copy to
site/
After building, deployment uses:
swa deploy site --deployment-token "<token>" --env production
Or via CI: the docs-deploy.yml GitHub Action handles build + deployment automatically on push to main.
How to Change and Publish: Solution Architect
- Edit the relevant YAML file in
architecture/metadata/ - Commit and push to
main - CI runs
generate-all.sh automatically, regenerates all affected portal pages, and deploys
Local preview (optional):
bash portal/scripts/generate-all.sh
cd portal && python3 -m mkdocs serve
Change an API contract
- Edit the OpenAPI spec in
architecture/specs/{svc-name}.yaml - Verify backward compatibility (new required fields break consumers)
- Commit and push to
main - CI regenerates Swagger UI pages, microservice deep-dive pages, and sequence diagrams
Add a new service
- Add the service to
architecture/metadata/domains.yaml (assign to a domain) - Create
architecture/specs/{svc-name}.yaml (OpenAPI spec) - Add entries to
data-stores.yaml, cross-service-calls.yaml, and label-to-svc.yaml - Add entries to
events.yaml if the service produces or consumes events - Add nav entry to
portal/mkdocs.yml under Services > Microservices - Commit and push -- CI generates the new microservice page, diagrams, and Swagger UI
Create a solution design
- Create branch:
git checkout -b solution/NTK-XXXXX-slug - Create folder:
architecture/solutions/_NTK-XXXXX-slug/ - Populate the standard folder structure (see Solution Designs table above)
- Add entry to
architecture/metadata/capability-changelog.yaml - Update
architecture/metadata/tickets.yaml if needed - Push branch, open PR, merge to
main - CI generates the solution page and updates capability/ticket pages
Add or update a diagram
Hand-crafted diagram:
- Edit or create
.puml file in architecture/diagrams/{System,Components,Sequence,Tickets}/ - Follow C4 notation (use
!include <c4/C4_Container> or !include ../theme.puml) - Commit and push -- CI renders to SVG via
generate-svgs.sh
Endpoint diagram override:
- Create
.puml file in architecture/diagrams/endpoints/ matching the generated filename - The generator checks this directory first and uses the override instead of auto-generating
- Commit and push -- CI uses the override
Add an architecture decision
- Determine the next ADR number from
decisions/ - Create
decisions/ADR-{NNN}-{slug}.md using MADR format from standards/madr/adr-template.md - If the decision belongs to a solution, also add it to
3.solution/d.decisions/decisions.md - Commit and push
Update a wireframe
- Edit the
.excalidraw file in architecture/wireframes/{app}/ using the VS Code Excalidraw extension or excalidraw.com - Commit only the
.excalidraw source file - Push -- CI generates SVG + HTML + Markdown wrapper automatically
Add an event
- Add the event to the producer's AsyncAPI spec in
architecture/events/{svc-name}.events.yaml - Add the event to
architecture/metadata/events.yaml (producer, consumers, topic) - Commit and push -- CI regenerates event catalog pages and updates microservice pages
Update portal navigation
- Edit
portal/mkdocs.yml under the nav: section - Commit and push
How to Change and Publish: Software Developer
Change service source code
- Edit files in
services/{svc-name}/ - Run tests locally:
cd services/{svc-name} && ./mvnw test - Commit and push -- CI runs
service-ci.yml (build + test)
NOTE: Source code changes do not affect the architecture portal. If the implementation reveals an API contract gap (missing field, new endpoint, changed behavior), propose the contract change separately.
Propose an API contract change
- Create a branch
- Edit the OpenAPI spec in
architecture/specs/{svc-name}.yaml - If the change affects cross-service calls, update
architecture/metadata/cross-service-calls.yaml - Push the branch and open a pull request
- The Solution Architect reviews and approves the contract change
- On merge, CI regenerates all affected portal pages
- Create a branch
- Edit the relevant file in
architecture/metadata/ - Push and open a pull request for Solution Architect review
- On merge, CI regenerates affected portal pages
Add a new service implementation
- Copy
services/template/ to services/{svc-name}/ - Implement the API contract defined in
architecture/specs/{svc-name}.yaml - Write contract tests against the OpenAPI spec (ADR-013)
- Add database migrations to
infra/db/ if needed - Push and open a pull request
Update infrastructure
- Edit Bicep files in
infra/ - Test locally:
az deployment group what-if - Push -- CI runs
infra-deploy.yml
Update CI/CD workflows
- Edit
.github/workflows/*.yml - Push to a branch and verify via GitHub Actions "dry run" or test workflow
Run the portal build locally
# Activate virtual environment
source .venv/bin/activate
# Install dependencies (first time only)
pip install -r requirements-docs.txt
# Generate all artifacts and build
bash portal/scripts/generate-all.sh
# Serve locally for preview
cd portal && python3 -m mkdocs serve
Regenerate a single artifact type
# Only microservice pages
python3 portal/scripts/generate-microservice-pages.py
# Only capability pages
python3 portal/scripts/generate-capability-pages.py
# Only CALM topology
python3 scripts/generate-calm.py
# Only hand-crafted diagram SVGs
bash portal/scripts/generate-svgs.sh
Key Rules
-
Never edit generated files. They live in portal/docs/microservices/, portal/docs/applications/, portal/docs/solutions/, portal/docs/capabilities/, portal/docs/tickets/, portal/docs/topology/, portal/docs/services/api/, portal/docs/events/, portal/docs/actors/, and portal/docs/diagrams/svg/. Edit the source files instead.
-
Solution Architects own all architecture metadata. Software Developers propose changes via pull request.
-
One push rebuilds everything. The CI pipeline runs the full generate-all.sh on every push to main that touches architecture or documentation files.
-
Capability changes go in the changelog. Every solution that affects capabilities must add an entry to architecture/metadata/capability-changelog.yaml -- this is the single source of truth for L3 capability emergence.
-
API contracts are the shared boundary. Solution Architects define the contract (OpenAPI spec). Software Developers implement it. Contract tests (ADR-013) verify alignment.