capsule AI-native Unix-like composition layer

capsule.yaml

2,104 bytes · 56 lines · capsule://quake0day/[email protected] raw on github

apiVersion: capsule.dev/v0.1
kind: Capsule
name: scnmnt-quota-service
version: 0.1.0
type: subsystem
purpose:
  summary: 'Manages user credit quotas for image generation. It provides functionalities
    for checking current balance, daily check-ins to grant credits, and spending credits,
    using a local bbolt database for persistence.

    '
  owns:
  - Credit balance management for users identified by fingerprints
  - Daily credit grant mechanism with a balance cap
  - Persistence layer using bbolt database
  - Error handling specific to quota operations
  does_not_own:
  - Generation of user fingerprints
  - Integration with external payment systems
  - API route registration (delegated to scnmnt-api-router)
interfaces:
  provides:
  - kind: library
    name: quota.Store
    description: Go client for managing user quotas.
  - kind: http_api
    name: /api/quota/status
    description: Endpoint to retrieve a user's current quota status.
  - kind: http_api
    name: /api/quota/check-in
    description: Endpoint to allow users to perform a daily check-in for credits.
agent:
  summary_for_ai: 'An agent working on this capsule would focus on database interactions
    (bbolt), credit logic (granting, spending, capping), and ensuring data integrity.
    They should understand transactional operations and error handling for data storage.

    '
  avoid:
  - Implementing image generation logic
  - Handling HTTP security concerns like CSRF
verification:
  invariants:
  - User balances must not exceed `BalanceCap`.
  - Daily grants must only apply once per day per user.
  - Credits must be accurately deducted upon successful 'Spend' operations.
x-reuse:
  notes: 'The `DefaultPath` constant (`data/quota.db`) specifies the local bbolt database
    file path. `DailyGrant` (10) and `BalanceCap` (100) are hardcoded constants defining
    the quota policy. Error messages like ''浏览器指纹不正确'' are hardcoded in Chinese and
    would need localization or generalization. The use of `bbolt` is a specific technology
    choice.

    '
x-reconstruct:
  install: install.json