Forge module wrapping operations-camera-registry (camera plane mount point).
| Tier | application |
| Role | unclassified (baselined) |
| Path | crates/application/cameras |
| Edition | 2024 |
| Targets | application_cameras |
| Public items | 7 across 0 modules |
| Tests | 3 |
What it is for
application-cameras — the camera plane's module mount point.
Wraps operations_camera_registry so a application-engine host mounts the camera plane the same way it mounts every other domain module, instead of hand-calling ensure_schema and hand-seeding permission codes.
Migrations are delegated, never enumerated. migrate_pending calls operations_camera_registry::ensure_schema, which owns the migration set. This is the BUG-0001 lesson applied at the module layer: a host (or a module shim) that lists migration files by hand goes stale the moment a migration is added, and the failure is silent until something downstream 403s. The crate that owns the schema is the only thing that should know how many files there are.
migrate_pending: ModuleIdentity::migrate_pending
Capabilities
CamerasModule
application-cameras — the camera plane's module mount point.
| Item |
|---|
pub struct CamerasModule |
CamerasModule :: fn new() -> Self |
CamerasModule :: fn name(& self) -> & 'static str |
CamerasModule :: fn version(& self) -> & 'static str |
CamerasModule :: fn migrations(& self) -> Vec <MigrationSet> |
CamerasModule :: async fn migrate_pending(& self, pool : & PgPool) -> Result <u32, MigrationError> |
CamerasModule :: fn permission_codes(& self) -> Vec <String> |
How to use it
No examples/ target and no doctest in this crate's rustdoc. The tests listed under Verification are the closest executable usage.
Module structure
No public modules: the crate root is its whole surface.
Public surface
`crate root`
| Item | What it is |
|---|---|
pub struct CamerasModule | The camera-plane module: registry schema + camera RBAC permission codes. |
CamerasModule :: fn new() -> Self | — |
CamerasModule :: fn name(& self) -> & 'static str | — |
CamerasModule :: fn version(& self) -> & 'static str | — |
CamerasModule :: fn migrations(& self) -> Vec <MigrationSet> | Descriptive only — the engine executes Self::migrate_pending |
CamerasModule :: async fn migrate_pending(& self, pool : & PgPool) -> Result <u32, MigrationError> | — |
CamerasModule :: fn permission_codes(& self) -> Vec <String> | The camera RBAC ladder from ADR-0004 D3 |
No pub use re-exports: every item above is declared in this crate.
Boundary
Reaches into operations.
Shares tier application with 120 other crates: application-agreements, application-ai, application-analytics, application-approvals, application-assessments, application-audit-log, application-auth, application-billing, … (120 total).
_What this crate deliberately does NOT own is a judgment. No committed registry records one for it, so none is stated here._
Where it sits
| Tier (ontology) | application |
| Architectural role (taxonomy) | unclassified (baselined) |
| Location | crates/application/cameras |
| Vocabulary in force (lexicon) | current |
Tier flow. Which tiers this crate's own edges cross.
flowchart LR n_application["application"] --> n_operations["operations"]
Dependencies
Runtime, in this workspace.
| Crate | Tier | Optional | Only on |
|---|---|---|---|
| `application-core` | application | no | always |
| `operations-camera-registry` | operations | no | always |
Runtime, from outside the workspace.
| Crate | Requirement | Features | Optional | Only on |
|---|---|---|---|---|
async-trait | ^0.1 | — | no | always |
sqlx | ^0.8 | runtime-tokio, postgres, chrono, uuid, json | no | always |
Development. None.
Build. None.
Depended on by. Nothing in this workspace.
Signal flow — what reaches this crate, and what it reaches.
flowchart LR SELF["application-cameras"] SELF -->|runtime| n_application_core["application-core"] SELF -->|runtime| n_operations_camera_registry["operations-camera-registry"] classDef self fill:#1f883d,stroke:#1f883d,color:#fff; class SELF self;
Feature flags
No Cargo features are defined: every capability is unconditional, so no consumer can receive a half-wired crate.
Targets
| Kind | Name | Source |
|---|---|---|
| lib | application_cameras | `src/lib.rs` |
Error model
No public error type was detected: no public item declares a type named *Error, and no public signature returns one.
Operational characteristics
| Property | Evidence |
|---|---|
| async public surface | yes |
| async runtime | none detected |
| database access | yes |
| network I/O | none detected |
| unsafe code | none detected |
| environment variables | yes |
No unsafe block, unsafe fn, unsafe impl or unsafe trait was found by the parser anywhere in this crate's source.
Configuration
| Variable | Read in |
|---|---|
CARGO_PKG_VERSION | src/lib.rs |
Related capabilities
No workspace crate depends on this one.
Verification
| Kind | Count |
|---|---|
| Unit tests | 3 |
| Integration tests | 0 |
| Examples | 0 |
| Doctests | 0 |
Evidence by module. How often each public module is named by something executable.
| Module | Tests | Examples | Consumers |
|---|---|---|---|
crate root | 1 | 0 | 0 |
What the tests establish, by name:
declares_the_camera_rbac_ladder—src/lib.rsidentity_is_stable—src/lib.rsmigration_descriptor_delegates_rather_than_listing_files—src/lib.rs
Documentation coverage
| Measure | Documented | Total |
|---|---|---|
| Public items with rustdoc | 3 | 7 |
Public modules with a //! block | 0 | 0 |
pie showData
title Public items with rustdoc
"Documented" : 3
"No rustdoc detected" : 4
Metrics
| Metric | Value |
|---|---|
| Rust source files | 1 |
| Source lines | 113 |
| Code lines | 70 |
| Public API items | 7 |
| Public modules | 0 |
| Tests | 3 |
| Examples | 0 |
| Cargo features | 0 |
| Direct runtime dependencies | 4 |
| Workspace reverse dependencies | 0 |
pie showData
title Public API by kind
"method" : 6
"struct" : 1
pie showData
title Rust source composition
"Code" : 70
"Blank or comment" : 43
Generation
Rendered by tools-corpus corpus readme from repository evidence alone, renderer schema 2, lexicon current. No model, network service or database was consulted. Regenerate with tools-corpus corpus readme --write; verify with --check.