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
7 changes: 3 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,13 @@ on:
jobs:
test:
runs-on: ubuntu-latest
continue-on-error: true
strategy:
matrix:
python-version: ["3.10", "3.12"]

steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
Expand All @@ -28,7 +27,7 @@ jobs:
run: pip install -e ".[dev]"

- name: Lint with ruff
run: ruff check src/ tests/ || echo "::warning::ruff reported issues"
run: ruff check src/ tests/

- name: Run tests
run: pytest tests/ -v --tb=short || echo "::warning::pytest reported failures"
run: pytest tests/ -v --tb=short
18 changes: 18 additions & 0 deletions ecosystem.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
schema_version: '1.0'
repo: analytics-engine
organ: V
display_name: "Logos Analytics — Weekly engagement metrics collection and aggregation"

delivery:
- platform: python_library
status: in_progress
priority: high
notes: "Engagement metrics engine with weekly collection schedule"
next_action: "Complete metrics aggregation pipeline"

content:
- platform: docs_site
status: not_started
priority: medium
notes: "Metrics methodology, aggregation logic, report format"
next_action: "Document metrics collection and reporting"
38 changes: 38 additions & 0 deletions ecosystem/pillar-dna/content.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
schema_version: '1.0'
pillar: content
product_type: saas
lifecycle_stage: conception
research:
scan_scope:
- blog
- docs_site
- tutorials
- case_studies
- newsletter
competitors: []
cadence: monthly
artifacts:
- name: content-calendar
cadence: monthly
staleness_days: 45
- name: seo-audit
cadence: quarterly
staleness_days: 120
gen_prompts: []
crit_prompts: []
gates:
research_to_planning:
- At least one landscape snapshot exists
- 3+ competitors profiled
planning_to_building:
- Channel strategy artifact exists
- Priority arms identified with next_actions
building_to_live:
- 'At least one arm has status: live'
signals:
emits:
- signal:pillar-stage-change
- signal:new-competitor-found
listens:
- signal:ecosystem-arm-live
- signal:market-shift-detected
40 changes: 40 additions & 0 deletions ecosystem/pillar-dna/delivery.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
schema_version: '1.0'
pillar: delivery
product_type: saas
lifecycle_stage: building
research:
scan_scope:
- web_app
- api
- mobile
competitors: []
cadence: monthly
artifacts:
- name: uptime-monitoring
cadence: weekly
staleness_days: 14
- name: deployment-pipeline
cadence: quarterly
staleness_days: 120
gen_prompts:
- id: platform_coverage
trigger: quarterly
prompt: Audit delivery platforms for {product_type}. Compare our presence against
top competitors.
crit_prompts: []
gates:
research_to_planning:
- At least one landscape snapshot exists
- 3+ competitors profiled
planning_to_building:
- Channel strategy artifact exists
- Priority arms identified with next_actions
building_to_live:
- 'At least one arm has status: live'
signals:
emits:
- signal:pillar-stage-change
- signal:new-competitor-found
listens:
- signal:ecosystem-arm-live
- signal:market-shift-detected
6 changes: 5 additions & 1 deletion tests/test_github_activity.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,11 @@ def test_main_runs(self, mock_exit, mock_config, mock_collect, tmp_path):
with patch("sys.argv", ["prog", "--output", str(output_dir)]):
main()

assert (output_dir / "github-activity-2026-03-05.json").exists()
# main() uses date.today() for filename, not the mock's period.end
from datetime import date

expected = output_dir / f"github-activity-{date.today().isoformat()}.json"
assert expected.exists()
mock_exit.assert_called_with(0)


Expand Down
Loading