Skip to content

Phase 9/10: marketplace docs/E2E and tool/usage ledger instrumentation - #507

Merged
Ayinkx merged 6 commits into
AyinkxLab:mainfrom
arike-tech:fix/423-426-431-434
Oct 17, 2026
Merged

Ayinkx merged 6 commits into
AyinkxLab:mainfrom
arike-tech:fix/423-426-431-434

Conversation

@arike-tech

Copy link
Copy Markdown
Contributor

Summary

Implements four accepted Stellar Wave issues in one branch/PR.

Test plan

  • python -m pytest tests/test_tools.py tests/test_usage_ledger.py tests/test_marketplace_e2e.py -q
  • python -m pytest tests/test_notifications.py tests/test_docs_links.py tests/test_alerts.py -q
  • python -m pytest -q --ignore=tests/test_migrations.py
  • python -m pytest tests/test_migrations.py -q
  • python -m ruff check .
  • python -m black --check .

Notes

  • This is one PR for all four issues, as requested.
  • The branch includes a small test-collection unblock for current main: optional alerts/budget_alerts services are guarded until their implementations land, and two recent formatting issues are fixed. Without this, pytest and ruff check . fail before reaching these changes.

Closes #423
Closes #426
Closes #431
Closes #434

- guard the optional billing-alert import in conftest
- fix the alert test module-level skip and syntax
- skip budget-alert tests until AyinkxLab#470 lands
- fix email service docstring and import formatting
Record generate, code-action, and file-analysis completions as tools ledger rows with user, conversation, provider/model, and token metadata. Instrumentation is best-effort and never breaks the tool response.
Add 'flask usage backfill' with bounded keyset pagination, dry-run and JSON counts. Historical Message token columns are copied without being modified, and re-runs skip rows that were already backfilled.
…ab#423)

Exercise the local catalog, install/enable endpoints, dependency ordering, trust refusal, event dispatch, and rollback without network access.
…#426)

Document catalog, discovery, trust, network allowlist, execution, and catalog cache behavior in README, .env.example, and the plugin guide. Safe fail-closed defaults are called out explicitly.
@drips-wave

drips-wave Bot commented Oct 17, 2026

Copy link
Copy Markdown

@arike-tech Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@arike-tech

Copy link
Copy Markdown
Contributor Author

Verification on the pushed branch (9699625):

  • python -m pytest -q --ignore=tests/test_migrations.py: all tests pass (2 skips: budget-alert tests guarded until Phase 10: Budget threshold notifications #470 lands).
  • python -m pytest tests/test_migrations.py -q: 43 passed.
  • python -m ruff check .: clean.
  • python -m black --check .: 278 files unchanged.

The four issue-specific areas are covered by tests/test_tools.py, tests/test_usage_ledger.py, and tests/test_marketplace_e2e.py.

# Conflicts:
#	app/services/usage_ledger.py
#	tests/conftest.py
#	tests/test_usage_ledger.py
@arike-tech

Copy link
Copy Markdown
Contributor Author

Conflict resolved by merging latest upstream main (07a0e27) into the PR branch.

Resolutions:

  • app/services/usage_ledger.py: kept both the new request/status constants and the backfill bounds/logic.
  • tests/conftest.py: adopted the upstream multi-module resetter (already tolerates missing optional modules).
  • tests/test_usage_ledger.py: kept both the new review-instrumentation tests and the chat-backfill tests.

Verification after merge:

  • Full test suite: pass.
  • tests/test_migrations.py: 44 passed.
  • ruff check .: clean.
  • black --check .: clean.

The PR is now MERGEABLE. The new CI run shows action_required, which is the fork-workflow approval gate rather than a conflict.

@Ayinkx
Ayinkx merged commit a7ffd86 into AyinkxLab:main Oct 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants