How Repository Evidence Works in Architecture Diagrams
Archify embeds cryptographically verified source code links into architecture diagrams by validating local Git repositories against declared GitHub URLs and 40-character commit SHAs, ensuring every visual node maps to an immutable, exact line of code.
Repository evidence transforms static architecture diagrams into interactive, source-verified documentation within the Archify ecosystem. By pinning visual components to specific Git commits and file paths, the system creates an unbreakable chain between high-level design and implementation details. This feature operates entirely within the architecture diagram type and requires explicit opt-in through JSON metadata and CLI flags according to the tt-a1i/archify source code.
Declaring Repository Evidence in Diagram JSON
To enable verification, the diagram must declare repository metadata at the top level and attach source references to individual components.
The meta.repository Object
The diagram JSON requires a meta.repository object containing a public GitHub URL and a full 40-character commit SHA. This declaration signals Archify to activate the verification pipeline defined in archify/renderers/shared/repository-evidence.mjs.
{
"type": "architecture",
"meta": {
"repository": {
"url": "https://github.com/example/project",
"revision": "9f1a1cf1afdc04d7b5406782b40dfec76d9bc798"
}
}
}
Component Source Entries
Individual components list their evidence in a sources array. Each entry specifies a relative file path and optional line range. The verifiedSourcePath function validates these entries for POSIX compliance and path safety.
{
"components": [
{
"id": "router",
"label": "API Router",
"sources": [
{
"path": "src/router.js",
"line": 42,
"end_line": 58,
"label": "Router entry point"
}
]
}
]
}
The Repository Evidence Verification Pipeline
When the user invokes the renderer with --repo-root, Archify executes a multi-stage validation pipeline to ensure the local repository state matches the authored metadata exactly.
Architecture-Only Restriction
Repository evidence is strictly limited to diagrams of type architecture. The hasRepositoryEvidence function checks the diagram type at lines 81-86 of repository-evidence.mjs and aborts with a diagnostic error if evidence is present in any other diagram type.
CLI Flag and Local Repository Binding
The --repo-root <path> flag is mandatory when repository evidence is declared. The verifyRepositoryEvidence function (lines 114-119) uses this path to locate the local checkout that corresponds to the authored repository metadata.
archify render diagram.json --repo-root /path/to/project --mode architecture
Git Remote and Revision Verification
Using internal helpers runGit and gitValue (lines 20-38), Archify performs three critical validations:
- Resolves the repository top-level directory
- Verifies the
originremote matchesmeta.repository.url - Confirms the declared commit SHA exists in the local Git history
Source Path Syntax Validation
The verifiedSourcePath function (lines 47-64) enforces strict POSIX-style relative path constraints:
- No leading slashes or backslashes
- No empty segments,
.,.., or.gitcomponents - Valid line range syntax where
end_line≥line
Blob and Line Count Verification
For each source entry, Archify executes git cat-file -t to verify the object is a blob (file) rather than a tree or commit. When line numbers are specified, the system runs git show to fetch content and validate that the requested line range exists within the file boundaries (lines 86-100).
Generating Verified Evidence in the Output
Successfully verified sources are transformed into Semantic Passport entries. The rendered HTML includes a source-evidence beacon—a small clickable icon on the visual node that expands to reveal a verified GitHub URL:
https://github.com/<owner>/<repo>/blob/<sha>/<path>#L<line>-L<end>
This link points directly to the exact code lines, pinned to the immutable commit SHA declared in the diagram metadata.
Error Handling and Diagnostic Guidance
When any verification check fails, the evidenceFailure function (lines 9-18) throws structured diagnostic errors containing:
- A machine-readable
codefor automated processing - A human-readable
messageexplaining the failure - A list of
supportedFixes(e.g., "install Git", "use a repository-relative path", "pin a full commit SHA")
This structured error format guides diagram authors to correct metadata issues before the final HTML artifact is generated, preventing broken or unverified links from appearing in published documentation.
Summary
- Repository evidence requires the
architecturediagram type and explicit--repo-rootCLI flag to activate the verification pipeline. - The
meta.repositoryobject must contain a valid GitHub URL and full 40-character commit SHA. - Local Git validation occurs through
runGitandgitValuehelpers, verifying remotes, revisions, and object types before rendering. - Source paths undergo strict POSIX validation via
verifiedSourcePathto prevent directory traversal and ensure cross-platform compatibility. - Verified evidence renders as clickable source-evidence beacons linking to immutable GitHub blob URLs with line anchors.
- All failures route through
evidenceFailure, providing structured diagnostics withsupportedFixesfor rapid remediation.
Frequently Asked Questions
Can I use repository evidence with sequence or flow diagrams?
No, repository evidence is restricted to architecture type diagrams only. The hasRepositoryEvidence function in archify/renderers/shared/repository-evidence.mjs explicitly checks the diagram type and aborts if evidence is present in other formats, maintaining a strict separation between architectural views and behavioral diagrams.
What happens if my local repository is on a different commit than declared?
Archify validates the commit SHA against the local Git history using gitValue commands. If the revision is missing or the origin remote URL mismatches the meta.repository.url, evidenceFailure emits a diagnostic error suggesting you fetch the remote, checkout the correct commit, or correct the repository path in your diagram JSON.
Are absolute paths or parent directory references allowed in source entries?
No, the verifiedSourcePath function explicitly rejects paths containing leading slashes, backslashes, ., or .. segments to prevent directory traversal attacks. All source paths must be relative POSIX paths without empty segments or .git components, ensuring the diagram remains portable and secure.
Is the --repo-root flag optional when repository metadata is present?
No, the --repo-root flag is mandatory when repository evidence is declared. Without it, verifyRepositoryEvidence cannot locate the local checkout to perform Git validation, and the renderer will abort with a diagnostic error before generating any HTML output.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →