diff --git a/README.md b/README.md
index f166e88..ce5b845 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,6 @@
- Interactive Demo •
The Problem •
Capabilities •
Architecture •
@@ -26,14 +25,6 @@
---
-## 🎬 Ephemeral Protocol in Action
-
-
-
-
-
----
-
## 🔒 The Problem Passli Solves
When sharing sensitive records with doctors, employers, financial institutions, or rental agencies, users are traditionally forced to:
@@ -48,18 +39,8 @@ When sharing sensitive records with doctors, employers, financial institutions,
## ✨ Core Platform Capabilities
### 🗄️ 1. Personal Document Vault
-
-
-
-
-
- **Domain Taxonomy**: Organize records into structured categories (`Medical`, `Education`, `Vehicle`, `Personal & Identity`, `Professional`, `Other`).
- **Encrypted Document Browser**: Filterable vault with instant search and cryptographic SHA-256 integrity inspection.
-
-
-
-
-
- **Storage Migration CLI**: Includes `python manage.py encrypt_vault_storage` for seamless batch migration of legacy storage records.
### 🔑 2. Cryptographic Share Passes & Ephemeral QR Protocol
@@ -113,10 +94,6 @@ When sharing sensitive records with doctors, employers, financial institutions,
## 🔐 Cryptographic Architecture Flow
-
-
-
-
```mermaid
flowchart TD
subgraph Ingestion["Document Upload & Storage"]
diff --git a/tests/unit/test_repo_visual_identity.py b/tests/unit/test_repo_visual_identity.py
index 4ff409a..528c70f 100644
--- a/tests/unit/test_repo_visual_identity.py
+++ b/tests/unit/test_repo_visual_identity.py
@@ -80,21 +80,39 @@ def test_vault_documents_asset(self):
self.assertEqual(im.size, (1376, 768))
def test_readme_references_assets(self):
- """README.md must reference the visual identity assets via valid relative paths."""
+ """README.md must reference only the primary unique identification banner."""
+ import re
+
self.assertTrue(self.readme_path.exists(), "README.md must exist")
content = self.readme_path.read_text(encoding="utf-8")
- required_assets = [
- ".github/assets/passli-repo-banner.png",
+ # Primary unique identification hero banner must be referenced and exist
+ primary_banner = ".github/assets/passli-repo-banner.png"
+ self.assertIn(primary_banner, content, f"README.md must contain relative link to {primary_banner}")
+ self.assertTrue((self.base_dir / primary_banner).exists(), f"Asset {primary_banner} must exist on disk")
+
+ # Extract all image tags (HTML
and Markdown )
+ html_imgs = re.findall(r'
]*src=[\x22\x27]([^\x22\x27]+)[\x22\x27]', content)
+ md_imgs = re.findall(r'!\[[^\]]*\]\(([^)]+)\)', content)
+ all_imgs = html_imgs + md_imgs
+
+ # Local asset images embedded in README must ONLY consist of the primary banner
+ local_asset_imgs = [img for img in all_imgs if ".github/assets" in img or not img.startswith("http")]
+ self.assertEqual(
+ local_asset_imgs,
+ [primary_banner],
+ f"README.md must contain only the primary banner as embedded local asset, found: {local_asset_imgs}",
+ )
+
+ # Secondary visual embeds must not be embedded anywhere in README.md
+ secondary_assets = [
".github/assets/passli-ephemeral-workflow.gif",
".github/assets/passli-dashboard-preview.png",
".github/assets/passli-vault-documents.png",
".github/assets/passli-cryptographic-pipeline.png",
]
- for asset in required_assets:
- self.assertIn(asset, content, f"README.md must contain relative link to {asset}")
- target_file = self.base_dir / asset
- self.assertTrue(target_file.exists(), f"Asset {asset} referenced in README.md must exist")
+ for asset in secondary_assets:
+ self.assertNotIn(asset, content, f"README.md should not embed secondary asset {asset}")
def test_architecture_doc_references_assets(self):
"""docs/ARCHITECTURE.md must reference architecture and workflow assets."""
@@ -114,6 +132,7 @@ def test_branding_doc_exists_and_references_assets(self):
self.assertIn("passli-repo-banner.png", content)
self.assertIn("passli-ephemeral-workflow.gif", content)
self.assertIn("passli-dashboard-preview.png", content)
+ self.assertIn("passli-vault-documents.png", content)
self.assertIn("passli-cryptographic-pipeline.png", content)
def test_asset_catalog_doc_references_all_assets(self):
@@ -125,14 +144,17 @@ def test_asset_catalog_doc_references_all_assets(self):
"passli-repo-banner.png",
"passli-ephemeral-workflow.gif",
"passli-dashboard-preview.png",
+ "passli-vault-documents.png",
"passli-cryptographic-pipeline.png",
]:
self.assertIn(asset_filename, content)
self.assertTrue((self.assets_dir / asset_filename).exists())
def test_generator_scripts_exist(self):
- """Scripts to generate GIF and dashboard preview must exist and be accessible."""
+ """Scripts to generate GIF, dashboard preview, and official banner must exist and be accessible."""
gif_script = self.base_dir / "scripts" / "generate_ephemeral_flow_gif.py"
dash_script = self.base_dir / "scripts" / "generate_dashboard_preview.py"
+ official_script = self.base_dir / "scripts" / "generate_official_repo_assets.py"
self.assertTrue(gif_script.exists(), "generate_ephemeral_flow_gif.py must exist")
self.assertTrue(dash_script.exists(), "generate_dashboard_preview.py must exist")
+ self.assertTrue(official_script.exists(), "generate_official_repo_assets.py must exist")