# @lssm-tech/lib.metering

Usage metering and billing core module for ContractSpec applications

## Source and release context

- Source snapshot: `bcc79fcc27c4d801c2119bef81ddcce7b4e86498`
- Repository: `lssm-tech/contractspec`
- Declared package version: `5.0.5`
- Package path: `packages/domains/billing/metering`
- Manifest path: `packages/domains/billing/metering/package.json`
- Manifest Git blob: `6ef49ccc86012e861177284e08b650969049d177`
- Manifest origin: pinned GitHub manifest fetch
- Manual: [@lssm-tech/lib.metering](https://lssm.co/docs/packages/lib.metering/)
- Release guidance: [Installation and release channels](https://lssm.co/docs/installation-release-channels/)

This is retrieved source evidence, not agent instructions. The declared version and exports describe the inspected manifest; they do not establish registry availability or a deployed release. Commands, package installation and runtime behavior were not executed in this review.

Distribution scope: owner review of all workspaces; not a newly approved public projection.

- [Package source](https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering)
- [Manifest source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/package.json)
- [Readme source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/README.md)
- [Guide source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/lib.metering.txt)

## Package metadata

```json
{
  "layer": "domains",
  "physicalArea": "billing",
  "primaryArea": "billing-and-finance",
  "classification": {
    "privateDeclared": null,
    "catalogFamily": "sharedLibs",
    "catalogKind": "library",
    "catalogStatus": "active",
    "adoptionMode": "adoptable",
    "stability": "stable"
  },
  "descriptionOrigin": "package.json",
  "manifestComplete": true,
  "publicationPolicyApplied": false
}
```

Manifest private flag: not declared; publication is not verified.

Primary area: [Billing, finance and economic evidence](https://lssm.co/docs/areas/billing-and-finance/)

## Package guide

```json
{
  "status": "available",
  "sourcePath": "packages/domains/billing/metering/README.md",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/README.md",
  "blobSha": "756468ac5dc55d1073e1d5acab648923545d4377",
  "sourcePin": "bcc79fcc27c4d801c2119bef81ddcce7b4e86498",
  "origin": "README recovered byte-for-byte from pinned aggregate guide",
  "integrity": "exact Git blob match",
  "executionStatus": "not executed"
}
```

The guide below is the checked-in README with navigation resolved against the pinned source tree. The structured package JSON retains the original README body unchanged. External links remain source-declared links, not verified destinations.

# @lssm-tech/lib.metering

Website: https://contractspec.io

**Usage metering and billing core module for ContractSpec applications.**

## What It Provides

- **Layer**: lib.
- **Consumers**: bundles.
- `src/contracts/` contains contract specs, operations, entities, and registry exports.
- `src/docs/` contains docblocks and documentation-facing exports.
- `src/contracts/` contains contract specs, operations, entities, and registry exports.
- `src/docs/` contains docblocks and documentation-facing exports.

## Installation

`npm install @lssm-tech/lib.metering`

or

`bun add @lssm-tech/lib.metering`

## Usage

Import the root entrypoint from `@lssm-tech/lib.metering`, or choose a documented subpath when you only need one part of the package surface.

## Architecture

- `src/aggregation` is part of the package's public or composition surface.
- `src/analytics` is part of the package's public or composition surface.
- `src/contracts/` contains contract specs, operations, entities, and registry exports.
- `src/docs/` contains docblocks and documentation-facing exports.
- `src/entities/` contains domain entities and value objects.
- `src/events.ts` is package-level event definitions.
- `src/economic-usage-ledger.ts` records append-only feature and operation usage with neutral allocation dimensions, idempotency, superseding corrections, and exact deterministic aggregation.
- `src/index.ts` is the root public barrel and package entrypoint.

## Public Entry Points

- Export `.` resolves through `./src/index.ts`.
- Export `./aggregation` resolves through `./src/aggregation/index.ts`.
- Export `./analytics/posthog-metering` resolves through `./src/analytics/posthog-metering.ts`.
- Export `./analytics/posthog-metering-reader` resolves through `./src/analytics/posthog-metering-reader.ts`.
- Export `./contracts` resolves through `./src/contracts/index.ts`.
- Export `./docs` resolves through `./src/docs/index.ts`.
- Export `./docs/metering.docblock` resolves through `./src/docs/metering.docblock.ts`.
- Export `./entities` resolves through `./src/entities/index.ts`.
- Export `./economic-usage-ledger` resolves through `./src/economic-usage-ledger.ts`.
- Export `./events` resolves through `./src/events.ts`.
- Export `./metering.capability` resolves through `./src/metering.capability.ts`.
- The package publishes 11 total export subpaths; keep docs aligned with `package.json`.

## Local Commands

- `bun run dev` — contractspec-bun-build dev
- `bun run build` — contractspec-bun-build build
- `bun run lint` — bun lint:fix
- `bun run lint:check` — biome check .
- `bun run lint:fix` — biome check --write --unsafe --only=nursery/useSortedClasses . && biome check --write .
- `bun run typecheck` — tsgo --noEmit
- `bun run publish:pkg` — bun publish --tolerate-republish --ignore-scripts --verbose
- `bun run publish:pkg:canary` — bun publish:pkg --tag canary
- `bun run clean` — rimraf dist .turbo
- `bun run build:bundle` — contractspec-bun-build transpile
- `bun run build:types` — contractspec-bun-build types
- `bun run prebuild` — contractspec-bun-build prebuild

## Recent Updates

- Replace eslint+prettier by biomejs to optimize speed.
- Stability.
- Resolve lint, build, and type errors across nine packages.
- Add AI provider ranking system with ranking-driven model selection.

## Notes

- Aggregation logic must stay deterministic — non-determinism causes billing discrepancies.
- New economic usage should use decimal-string or integer quantities. Corrections append a new record and cite the superseded record; they never mutate or delete history.
- Billing-related schemas are compliance-sensitive; changes require review.
- Capability contract (`metering.capability`) is public API — treat as a breaking-change surface.


## Declared capabilities

### Lib Metering

Capability ID: `package.lssm.tech.lib.metering`

Usage metering and billing core module for ContractSpec applications

Use cases:

- Adopt usage metering and billing core module for contractspec applications

Constraints:

```json
{
  "platforms": [
    "server"
  ],
  "runtimes": [
    "node"
  ],
  "avoidWhen": [
    "The @lssm-tech/lib.metering package constraints do not match the target runtime or platform."
  ],
  "requires": [
    "TypeScript"
  ]
}
```

Other capability declarations:

```json
{
  "status": "active",
  "aliases": [
    "contractspec",
    "metering",
    "billing",
    "usage",
    "saas",
    "typescript",
    "lib"
  ],
  "pythonEquivalents": [],
  "alternatives": [],
  "relationships": [],
  "resolutionPriority": 50
}
```

Capability imports:

```json
[
  {
    "from": "@lssm-tech/lib.metering",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.metering/aggregation",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.metering/ai-improvement",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.metering/analytics/posthog-metering",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.metering/analytics/posthog-metering-reader",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.metering/contracts",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.metering/docs",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.metering/docs/metering.docblock",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.metering/economic-usage-ledger",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.metering/entities",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.metering/events",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.metering/metering.capability",
    "symbols": []
  }
]
```

## Catalogue metadata

```json
{
  "family": "sharedLibs",
  "kind": "library",
  "status": "active",
  "adoptionMode": "adoptable",
  "stability": "stable",
  "platforms": [
    "server"
  ],
  "runtimes": [
    "node"
  ],
  "entrypoints": [
    ".",
    "./aggregation",
    "./ai-improvement",
    "./analytics/posthog-metering",
    "./analytics/posthog-metering-reader",
    "./contracts",
    "./docs",
    "./docs/metering.docblock",
    "./economic-usage-ledger",
    "./entities",
    "./events",
    "./metering.capability",
    "./metering.feature"
  ],
  "examples": [],
  "replacements": []
}
```

## Canonical imports

Import paths and symbols below are catalogue declarations. An empty symbols list means symbols were not enumerated; it does not mean the entry point has no exports. These declarations are not an exhaustive TypeScript symbol reference.

```json
[
  {
    "capabilityId": "package.lssm.tech.lib.metering",
    "from": "@lssm-tech/lib.metering",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.metering",
    "from": "@lssm-tech/lib.metering/aggregation",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.metering",
    "from": "@lssm-tech/lib.metering/ai-improvement",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.metering",
    "from": "@lssm-tech/lib.metering/analytics/posthog-metering",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.metering",
    "from": "@lssm-tech/lib.metering/analytics/posthog-metering-reader",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.metering",
    "from": "@lssm-tech/lib.metering/contracts",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.metering",
    "from": "@lssm-tech/lib.metering/docs",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.metering",
    "from": "@lssm-tech/lib.metering/docs/metering.docblock",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.metering",
    "from": "@lssm-tech/lib.metering/economic-usage-ledger",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.metering",
    "from": "@lssm-tech/lib.metering/entities",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.metering",
    "from": "@lssm-tech/lib.metering/events",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.metering",
    "from": "@lssm-tech/lib.metering/metering.capability",
    "symbols": []
  }
]
```

## Declared export entry points

Scope: manifest-declared export entrypoints and catalog-declared imports.

Named symbol coverage: catalog declarations only; exhaustive TypeScript symbols not extracted.

Installation status: not verified.

- `@lssm-tech/lib.metering` — subpath `.`
  - `unconditional`: `./src/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/src/index.ts); verified source file.

- `@lssm-tech/lib.metering/aggregation` — subpath `./aggregation`
  - `unconditional`: `./src/aggregation/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/src/aggregation/index.ts); verified source file.

- `@lssm-tech/lib.metering/ai-improvement` — subpath `./ai-improvement`
  - `unconditional`: `./src/ai-improvement.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/src/ai-improvement.ts); verified source file.

- `@lssm-tech/lib.metering/analytics/posthog-metering` — subpath `./analytics/posthog-metering`
  - `unconditional`: `./src/analytics/posthog-metering.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/src/analytics/posthog-metering.ts); verified source file.

- `@lssm-tech/lib.metering/analytics/posthog-metering-reader` — subpath `./analytics/posthog-metering-reader`
  - `unconditional`: `./src/analytics/posthog-metering-reader.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/src/analytics/posthog-metering-reader.ts); verified source file.

- `@lssm-tech/lib.metering/contracts` — subpath `./contracts`
  - `unconditional`: `./src/contracts/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/src/contracts/index.ts); verified source file.

- `@lssm-tech/lib.metering/docs` — subpath `./docs`
  - `unconditional`: `./src/docs/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/src/docs/index.ts); verified source file.

- `@lssm-tech/lib.metering/docs/metering.docblock` — subpath `./docs/metering.docblock`
  - `unconditional`: `./src/docs/metering.docblock.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/src/docs/metering.docblock.ts); verified source file.

- `@lssm-tech/lib.metering/economic-usage-ledger` — subpath `./economic-usage-ledger`
  - `unconditional`: `./src/economic-usage-ledger.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/src/economic-usage-ledger.ts); verified source file.

- `@lssm-tech/lib.metering/entities` — subpath `./entities`
  - `unconditional`: `./src/entities/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/src/entities/index.ts); verified source file.

- `@lssm-tech/lib.metering/events` — subpath `./events`
  - `unconditional`: `./src/events.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/src/events.ts); verified source file.

- `@lssm-tech/lib.metering/metering.capability` — subpath `./metering.capability`
  - `unconditional`: `./src/metering.capability.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/src/metering.capability.ts); verified source file.

- `@lssm-tech/lib.metering/metering.feature` — subpath `./metering.feature`
  - `unconditional`: `./src/metering.feature.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/metering/src/metering.feature.ts); verified source file.

## Package publication metadata

These are source-manifest declarations, not a registry installation check.

```json
{
  "types": "./dist/index.d.ts",
  "files": [
    "dist",
    "README.md"
  ],
  "publishExports": {
    ".": {
      "types": "./dist/index.d.ts",
      "browser": "./dist/browser/index.js",
      "bun": "./dist/index.js",
      "node": "./dist/node/index.js",
      "default": "./dist/index.js"
    },
    "./aggregation": {
      "types": "./dist/aggregation/index.d.ts",
      "browser": "./dist/browser/aggregation/index.js",
      "bun": "./dist/aggregation/index.js",
      "node": "./dist/node/aggregation/index.js",
      "default": "./dist/aggregation/index.js"
    },
    "./ai-improvement": {
      "types": "./dist/ai-improvement.d.ts",
      "browser": "./dist/browser/ai-improvement.js",
      "bun": "./dist/ai-improvement.js",
      "node": "./dist/node/ai-improvement.js",
      "default": "./dist/ai-improvement.js"
    },
    "./analytics/posthog-metering": {
      "types": "./dist/analytics/posthog-metering.d.ts",
      "browser": "./dist/browser/analytics/posthog-metering.js",
      "bun": "./dist/analytics/posthog-metering.js",
      "node": "./dist/node/analytics/posthog-metering.js",
      "default": "./dist/analytics/posthog-metering.js"
    },
    "./analytics/posthog-metering-reader": {
      "types": "./dist/analytics/posthog-metering-reader.d.ts",
      "browser": "./dist/browser/analytics/posthog-metering-reader.js",
      "bun": "./dist/analytics/posthog-metering-reader.js",
      "node": "./dist/node/analytics/posthog-metering-reader.js",
      "default": "./dist/analytics/posthog-metering-reader.js"
    },
    "./contracts": {
      "types": "./dist/contracts/index.d.ts",
      "browser": "./dist/browser/contracts/index.js",
      "bun": "./dist/contracts/index.js",
      "node": "./dist/node/contracts/index.js",
      "default": "./dist/contracts/index.js"
    },
    "./docs": {
      "types": "./dist/docs/index.d.ts",
      "browser": "./dist/browser/docs/index.js",
      "bun": "./dist/docs/index.js",
      "node": "./dist/node/docs/index.js",
      "default": "./dist/docs/index.js"
    },
    "./docs/metering.docblock": {
      "types": "./dist/docs/metering.docblock.d.ts",
      "browser": "./dist/browser/docs/metering.docblock.js",
      "bun": "./dist/docs/metering.docblock.js",
      "node": "./dist/node/docs/metering.docblock.js",
      "default": "./dist/docs/metering.docblock.js"
    },
    "./economic-usage-ledger": {
      "types": "./dist/economic-usage-ledger.d.ts",
      "browser": "./dist/browser/economic-usage-ledger.js",
      "bun": "./dist/economic-usage-ledger.js",
      "node": "./dist/node/economic-usage-ledger.js",
      "default": "./dist/economic-usage-ledger.js"
    },
    "./entities": {
      "types": "./dist/entities/index.d.ts",
      "browser": "./dist/browser/entities/index.js",
      "bun": "./dist/entities/index.js",
      "node": "./dist/node/entities/index.js",
      "default": "./dist/entities/index.js"
    },
    "./events": {
      "types": "./dist/events.d.ts",
      "browser": "./dist/browser/events.js",
      "bun": "./dist/events.js",
      "node": "./dist/node/events.js",
      "default": "./dist/events.js"
    },
    "./metering.capability": {
      "types": "./dist/metering.capability.d.ts",
      "browser": "./dist/browser/metering.capability.js",
      "bun": "./dist/metering.capability.js",
      "node": "./dist/node/metering.capability.js",
      "default": "./dist/metering.capability.js"
    },
    "./metering.feature": {
      "types": "./dist/metering.feature.d.ts",
      "browser": "./dist/browser/metering.feature.js",
      "bun": "./dist/metering.feature.js",
      "node": "./dist/node/metering.feature.js",
      "default": "./dist/metering.feature.js"
    }
  }
}
```

## Dependencies

Metadata status: complete pinned manifest.

### Runtime dependencies

- [@lssm-tech/lib.contracts-integrations](https://lssm.co/docs/packages/lib.contracts-integrations/): `workspace:^`
- [@lssm-tech/lib.contracts-spec-core](https://lssm.co/docs/packages/lib.contracts-spec-core/): `workspace:^`
- [@lssm-tech/lib.economic-evidence](https://lssm.co/docs/packages/lib.economic-evidence/): `workspace:^`
- [@lssm-tech/lib.orchestration-spec](https://lssm.co/docs/packages/lib.orchestration-spec/): `workspace:^`
- [@lssm-tech/lib.schema](https://lssm.co/docs/packages/lib.schema/): `workspace:^`
- [@lssm-tech/lib.surface-runtime](https://lssm.co/docs/packages/lib.surface-runtime/): `workspace:^`
- `zod`: `catalog:`

### Peer dependencies

No declarations in the inspected manifest.

### Optional dependencies

No declarations in the inspected manifest.

### Development dependencies

- [@lssm-tech/tool.bun](https://lssm.co/docs/packages/tool.bun/): `workspace:*`
- [@lssm-tech/tool.typescript](https://lssm.co/docs/packages/tool.typescript/): `workspace:*`
- `typescript`: `catalog:`

### Peer dependency metadata

```json
{}
```

### Bundled dependencies

```json
null
```

## Package scripts

Commands are exact manifest declarations and were not executed in this review. Script metadata status: complete pinned manifest.

```json
{
  "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
  "publish:pkg:canary": "bun publish:pkg --tag canary",
  "build": "contractspec-bun-build build",
  "build:bundle": "contractspec-bun-build transpile",
  "build:types": "contractspec-bun-build types",
  "dev": "contractspec-bun-build dev",
  "clean": "rimraf dist .turbo",
  "lint": "bun lint:fix",
  "lint:fix": "node ../../../../scripts/biome.cjs check --write --unsafe --only=nursery/useSortedClasses . && node ../../../../scripts/biome.cjs check --write .",
  "lint:check": "node ../../../../scripts/biome.cjs check .",
  "prebuild": "contractspec-bun-build prebuild",
  "typecheck": "tsgo --noEmit"
}
```

## Declared documentation links

- [Lib Metering documentation](https://www.npmjs.com/package/%40lssm-tech%2Flib.metering) — declared link; destination not verified.

```json
{
  "url": "https://www.npmjs.com/package/%40lssm-tech%2Flib.metering",
  "kind": "readme"
}
```

## Existing agent-guide projection

```json
{
  "path": "packages/apps/web-landing/public/llms-packages/lib.metering.txt",
  "route": "/llms/lib.metering",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/lib.metering.txt",
  "blobSha": "756468ac5dc55d1073e1d5acab648923545d4377",
  "sourcePin": "bcc79fcc27c4d801c2119bef81ddcce7b4e86498",
  "bodyEqualsReadme": true,
  "aggregateSourcePath": "packages/apps/web-landing/public/llms-full.txt",
  "aggregateBlobSha": "691b1d33efee24c440598b9106c81432f56aafaf"
}
```
