https://github.com/tonyandrewmeyer/mastodon-operator
· scanned 2026-06-16 00:40 UTC (2 months, 1 week ago)
79 raw signals (0 security + 79 graph)
Last scanned 2 months, 1 week ago · v1 · 63 actionable findings from 1 signal source. 16 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 792 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
charm_path |
software | healthy | tests/integration/test_charm.py:30 |
unit_address |
software | healthy | tests/integration/test_charm.py:37 |
https_get |
software | healthy | tests/integration/test_charm.py:43 |
test_deploy |
software | healthy | tests/integration/test_charm.py:59 |
test_web_responds |
software | healthy | tests/integration/test_charm.py:72 |
test_streaming_health |
software | healthy | tests/integration/test_charm.py:78 |
test_create_admin_action |
software | healthy | tests/integration/test_charm.py:83 |
test_tootctl_action |
software | healthy | tests/integration/test_charm.py:97 |
workload |
software | healthy | tests/unit/conftest.py:47 |
render |
software | healthy | tests/unit/test_mastodon.py:25 |
test_render_env_basics |
software | healthy | tests/unit/test_mastodon.py:31 |
test_render_env_redis_password |
software | healthy | tests/unit/test_mastodon.py:43 |
test_render_env_smtp_starttls |
software | healthy | tests/unit/test_mastodon.py:50 |
test_render_env_smtp_tls_and_none |
software | healthy | tests/unit/test_mastodon.py:57 |
test_render_env_s3_uri_style |
software | healthy | tests/unit/test_mastodon.py:63 |
test_render_env_elasticsearch |
software | healthy | tests/unit/test_mastodon.py:70 |
test_extra_env_appended_but_cannot_override_managed |
software | healthy | tests/unit/test_mastodon.py:82 |
test_env_file_text_quoting |
software | healthy | tests/unit/test_mastodon.py:91 |
test_env_value_newline_rejected |
software | healthy | tests/unit/test_mastodon.py:99 |
test_ensure_tls_material_fallback_regenerates |
software | healthy | tests/unit/test_mastodon.py:104 |
fake_run |
software | healthy | tests/unit/test_mastodon.py:113 |
test_generate_secrets_shapes |
software | healthy | tests/unit/test_mastodon.py:133 |
test_templates_render |
software | healthy | tests/unit/test_mastodon.py:144 |
ctx |
software | healthy | tests/unit/test_charm.py:36 |
db_relation |
software | healthy | tests/unit/test_charm.py:40 |
app_secret |
software | healthy | tests/unit/test_charm.py:46 |
base_state |
software | healthy | tests/unit/test_charm.py:52 |
written_env |
software | healthy | tests/unit/test_charm.py:66 |
test_blocked_when_hostname_missing |
software | healthy | tests/unit/test_charm.py:79 |
test_blocked_when_database_relation_missing |
software | healthy | tests/unit/test_charm.py:89 |
test_blocked_on_invalid_version |
software | healthy | tests/unit/test_charm.py:100 |
test_blocked_on_partial_tls_config |
software | healthy | tests/unit/test_charm.py:107 |
test_waiting_for_database_credentials |
software | healthy | tests/unit/test_charm.py:114 |
test_non_leader_waits_for_secrets |
software | healthy | tests/unit/test_charm.py:130 |
test_leader_generates_secrets |
software | healthy | tests/unit/test_charm.py:141 |
test_active_happy_path |
software | healthy | tests/unit/test_charm.py:156 |
test_restart_when_env_changes |
software | healthy | tests/unit/test_charm.py:180 |
test_services_restarted_when_down |
software | healthy | tests/unit/test_charm.py:187 |
test_non_leader_does_not_migrate |
software | healthy | tests/unit/test_charm.py:193 |
test_upgrade_builds_and_migrates |
software | healthy | tests/unit/test_charm.py:204 |
test_cleanup_timer_disabled |
software | healthy | tests/unit/test_charm.py:240 |
test_redis_relation_disables_local_redis |
software | healthy | tests/unit/test_charm.py:245 |
test_local_redis_fallback |
software | healthy | tests/unit/test_charm.py:257 |
test_s3_relation_enables_object_storage |
software | healthy | tests/unit/test_charm.py:264 |
test_elasticsearch_relation_enables_search |
software | healthy | tests/unit/test_charm.py:284 |
test_no_elasticsearch_by_default |
software | healthy | tests/unit/test_charm.py:298 |
test_invalid_es_preset_blocks |
software | healthy | tests/unit/test_charm.py:303 |
test_smtp_relation_preferred_over_config |
software | healthy | tests/unit/test_charm.py:309 |
test_smtp_config_fallback |
software | healthy | tests/unit/test_charm.py:331 |
test_relation_tls_preferred_over_self_signed |
software | healthy | tests/unit/test_charm.py:342 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
BucketEvent |
software | healthy | lib/charms/data_platform_libs/v0/s3.py:191 |
CredentialRequestedEvent |
software | healthy | lib/charms/data_platform_libs/v0/s3.py:203 |
S3CredentialEvents |
software | healthy | lib/charms/data_platform_libs/v0/s3.py:207 |
S3Provider |
software | healthy | lib/charms/data_platform_libs/v0/s3.py:213 |
S3Event |
software | healthy | lib/charms/data_platform_libs/v0/s3.py:510 |
CredentialsChangedEvent |
software | healthy | lib/charms/data_platform_libs/v0/s3.py:619 |
CredentialsGoneEvent |
software | healthy | lib/charms/data_platform_libs/v0/s3.py:623 |
S3CredentialRequiresEvents |
software | healthy | lib/charms/data_platform_libs/v0/s3.py:627 |
S3Requirer |
software | healthy | lib/charms/data_platform_libs/v0/s3.py:637 |
DataInterfacesError |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:498 |
SecretError |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:502 |
SecretAlreadyExistsError |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:506 |
SecretsUnavailableError |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:510 |
SecretsIllegalUpdateError |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:514 |
IllegalOperationError |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:518 |
PrematureDataAccessError |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:522 |
Scope |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:699 |
SecretGroup |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:706 |
RelationStatus |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:711 |
RelationStatusDict |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:734 |
SecretGroupsAggregate |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:742 |
CachedSecret |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:771 |
SecretCache |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:965 |
DataDict |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:1016 |
Data |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:1122 |
EventHandlers |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:1801 |
ProviderData |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:1860 |
RequirerData |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:2055 |
StatusEventBase |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:2215 |
StatusRaisedEvent |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:2249 |
StatusResolvedEvent |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:2253 |
RequirerCharmEvents |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:2257 |
RequirerEventHandlers |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:2264 |
ProviderEventHandlers |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:2369 |
DataPeerData |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:2409 |
DataPeerEventHandlers |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:2923 |
DataPeer |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:2939 |
DataPeerUnitData |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:2964 |
DataPeerUnit |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:2973 |
DataPeerOtherUnitData |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:2998 |
DataPeerOtherUnitEventHandlers |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:3015 |
DataPeerOtherUnit |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:3024 |
RelationEventWithSecret |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:3057 |
EntityProvidesEvent |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:3088 |
EntityRequiresEvent |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:3124 |
AuthenticationEvent |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:3158 |
DatabaseProvidesEvent |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:3221 |
DatabaseRequestedEvent |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:3233 |
DatabaseEntityRequestedEvent |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:3279 |
DatabaseEntityPermissionsChangedEvent |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py:3283 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
concierge.yaml |
software | healthy | concierge.yaml |
README.md |
software | healthy | README.md |
CONTRIBUTING.md |
software | healthy | CONTRIBUTING.md |
pyproject.toml |
software | healthy | pyproject.toml |
LICENSE |
software | healthy | LICENSE |
charmcraft.yaml |
software | healthy | charmcraft.yaml |
test_charm.py |
software | healthy | tests/integration/test_charm.py |
conftest.py |
software | healthy | tests/unit/conftest.py |
test_mastodon.py |
software | healthy | tests/unit/test_mastodon.py |
test_charm.py |
software | healthy | tests/unit/test_charm.py |
README.md |
software | healthy | docs/transcripts/README.md |
build-session.md |
software | healthy | docs/transcripts/build-session.md |
index.html |
software | healthy | docs/transcripts/html/index.html |
index.html |
software | healthy | docs/transcripts/html/ubuntu/index.html |
page-002.html |
software | healthy | docs/transcripts/html/ubuntu/1f8f0f59-6f51-4151-8ed4-85d792… |
page-010.html |
software | healthy | docs/transcripts/html/ubuntu/1f8f0f59-6f51-4151-8ed4-85d792… |
page-007.html |
software | healthy | docs/transcripts/html/ubuntu/1f8f0f59-6f51-4151-8ed4-85d792… |
page-004.html |
software | healthy | docs/transcripts/html/ubuntu/1f8f0f59-6f51-4151-8ed4-85d792… |
page-006.html |
software | healthy | docs/transcripts/html/ubuntu/1f8f0f59-6f51-4151-8ed4-85d792… |
page-009.html |
software | healthy | docs/transcripts/html/ubuntu/1f8f0f59-6f51-4151-8ed4-85d792… |
index.html |
software | healthy | docs/transcripts/html/ubuntu/1f8f0f59-6f51-4151-8ed4-85d792… |
page-011.html |
software | healthy | docs/transcripts/html/ubuntu/1f8f0f59-6f51-4151-8ed4-85d792… |
page-001.html |
software | healthy | docs/transcripts/html/ubuntu/1f8f0f59-6f51-4151-8ed4-85d792… |
page-008.html |
software | healthy | docs/transcripts/html/ubuntu/1f8f0f59-6f51-4151-8ed4-85d792… |
page-005.html |
software | healthy | docs/transcripts/html/ubuntu/1f8f0f59-6f51-4151-8ed4-85d792… |
page-003.html |
software | healthy | docs/transcripts/html/ubuntu/1f8f0f59-6f51-4151-8ed4-85d792… |
s3.py |
software | healthy | lib/charms/data_platform_libs/v0/s3.py |
data_interfaces.py |
software | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py |
smtp.py |
software | healthy | lib/charms/smtp_integrator/v0/smtp.py |
tls_certificates.py |
software | healthy | lib/charms/tls_certificates_interface/v4/tls_certificates.py |
cos_agent.py |
software | healthy | lib/charms/grafana_agent/v0/cos_agent.py |
dependabot.yml |
software | healthy | .github/dependabot.yml |
ci.yaml |
software | healthy | .github/workflows/ci.yaml |
charm.py |
software | healthy | src/charm.py |
mastodon.py |
software | healthy | src/mastodon.py |
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
integration |
software | healthy | tests/integration |
unit |
software | healthy | tests/unit |
docs |
software | healthy | docs |
transcripts |
software | healthy | docs/transcripts |
html |
software | healthy | docs/transcripts/html |
ubuntu |
software | healthy | docs/transcripts/html/ubuntu |
1f8f0f59-6f51-4151-8ed4-85d7920ab31e |
software | healthy | docs/transcripts/html/ubuntu/1f8f0f59-6f51-4151-8ed4-85d792… |
lib |
software | healthy | lib |
charms |
software | healthy | lib/charms |
data_platform_libs |
software | healthy | lib/charms/data_platform_libs |
v0 |
software | healthy | lib/charms/data_platform_libs/v0 |
smtp_integrator |
software | healthy | lib/charms/smtp_integrator |
v0 |
software | healthy | lib/charms/smtp_integrator/v0 |
tls_certificates_interface |
software | healthy | lib/charms/tls_certificates_interface |
v4 |
software | healthy | lib/charms/tls_certificates_interface/v4 |
grafana_agent |
software | healthy | lib/charms/grafana_agent |
v0 |
software | healthy | lib/charms/grafana_agent/v0 |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
| Label | Layer | Status | Path |
|---|---|---|---|
postgresql |
data | healthy | README.md |
redis |
data | healthy | README.md |
elasticsearch |
data | healthy | README.md |
mysql |
data | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py |
mongodb |
data | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py |
| Label | Layer | Status | Path |
|---|---|---|---|
10.0.0.1 |
network | healthy | tests/unit/test_mastodon.py |
127.0.0.1 |
network | healthy | tests/unit/test_mastodon.py |
10.10.0.5 |
network | healthy | tests/unit/test_charm.py |
10.20.0.7 |
network | healthy | tests/unit/test_charm.py |
10.30.0.9 |
network | healthy | tests/unit/test_charm.py |
| Label | Layer | Status | Path |
|---|---|---|---|
lint |
cicd | healthy | .github/workflows/ci.yaml |
lock-sync |
cicd | healthy | .github/workflows/ci.yaml |
unit |
cicd | healthy | .github/workflows/ci.yaml |
pack |
cicd | healthy | .github/workflows/ci.yaml |
| Label | Layer | Status | Path |
|---|---|---|---|
nginx |
network | healthy | README.md |
loadbalancer |
network | healthy | README.md |
haproxy |
network | healthy | tests/unit/test_charm.py |
| Label | Layer | Status | Path |
|---|---|---|---|
sidekiq |
data | healthy | README.md |
kafka |
data | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-5vwk8kvz |
software | healthy | /tmp/repobility-clone-5vwk8kvz |
| Label | Layer | Status | Path |
|---|---|---|---|
port:587 |
network | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
password_literal::lib/charms/data_platform_libs/v0/data_int… |
security | healthy | lib/charms/data_platform_libs/v0/data_interfaces.py |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::ci |
cicd | healthy | .github/workflows/ci.yaml |
This page is publicly accessible at:
https://repobility.com/scan/e67a0fe6-c5ef-4fe7-821d-4b13b114b42d/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/e67a0fe6-c5ef-4fe7-821d-4b13b114b42d/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.