Object Graph
The objects underneath the operating memory layer.
AcreFrame Core requires durable entities that connect facility context, biological production, quality assurance, compliance documentation, facility signals, human review, and decision memory. This is the proposed schema direction for design partner architecture.
Decision-support only. Human review required. No compliance certification, legal/regulatory advice, cultivation guidance, or autonomous facility control. Demo data is fictional.
Proposed schema direction / design-partner architecture. Real database schema will be co-designed with design partners based on their actual record structures, export formats, and operational workflows.
Core v0 scaffold is live. The entity model below is implemented as typed TypeScript objects with deterministic demo data and five public read-only API routes. Inspect the live scaffold →
Entities
Eighteen core entities
Facility
Design PartnerThe root operating context. A facility contains rooms, zones, licenses, and responsible parties.
Key fields
- facility_id (string) — Unique facility identifier.
- name (string) — Operating name.
- license_refs (string[]) — Regulatory license references.
- rooms (Room[]) — Linked room entities.
- active_batches (Batch[]) — Batches currently in facility.
Links to
Room, Zone, Batch, Decision Memo
Facility is the root of all operating memory. Multi-facility operations require facility-level rollup.
Room
Design PartnerSpatial container within a facility. Rooms host batches and generate signal events.
Key fields
- room_id (string) — Unique room identifier.
- facility_id (string) — Parent facility.
- room_type (string) — Flower, veg, dry, cure, trim, package, etc.
- zones (Zone[]) — Sub-zones within room.
- active_batches (Batch[]) — Batches currently in room.
Links to
Facility, Zone, Batch, Signal Event
Room linkage connects environmental signals to biological context.
Zone
Design PartnerSub-spatial unit within a room. Zones may have distinct environmental profiles.
Key fields
- zone_id (string) — Unique zone identifier.
- room_id (string) — Parent room.
- zone_type (string) — Environmental or stage classification.
Links to
Room, Batch, Signal Event
Zone granularity enables targeted signal-context mapping.
Batch
Design PartnerThe anchor object for movement, packet readiness, QA holds, facility signal context, and distribution dependencies.
Key fields
- batch_id (string) — Unique batch identifier.
- facility_id (string) — Parent facility.
- room_id (string) — Current room.
- stage (string) — Cultivation or processing stage.
- linked_lots (Lot[]) — Lots derived from or feeding this batch.
- qa_state (string) — Hold, cleared, or pending.
- packet_readiness (number) — Completeness score 0-100.
- review_owner (string) — Assigned review owner.
- movement_status (string) — Blocked, cleared, or pending.
- decision_history (Decision Memo[]) — Linked decision records.
Links to
Facility, Room, Lot, QA Hold, Packet Section, Decision Memo, Distribution Commitment
Batch is the central object. Most operating pressure converges here.
Lot
Design PartnerInventory unit derived from a batch. Lots track aging, hold state, and distribution commitments.
Key fields
- lot_id (string) — Unique lot identifier.
- batch_id (string) — Source batch.
- quantity (number) — Current quantity.
- aging_start (ISO8601) — Lot creation timestamp.
- hold_state (string) — Hold status.
Links to
Batch, Inventory Item, Distribution Commitment
Lot aging drives inventory and cost pressure.
Material
RoadmapInput material record for traceability and compliance documentation.
Key fields
- material_id (string) — Unique material identifier.
- material_type (string) — Input classification.
- batch_id (string) — Associated batch.
- source_doc (Evidence File) — Linked evidence.
Links to
Batch, Evidence File
Material traceability supports packet completeness and input documentation gaps.
Inventory Item
Design PartnerTrackable unit of inventory with location, quantity, and state.
Key fields
- item_id (string) — Unique item identifier.
- lot_id (string) — Source lot.
- location (string) — Room or zone location.
- quantity (number) — Current quantity.
- state (string) — Active, hold, quarantine, etc.
Links to
Lot, Room, QA Hold
Inventory state affects distribution commitment feasibility.
QA Hold
Design PartnerQuality assurance hold with aging, owner, evidence, and batch linkage.
Key fields
- hold_id (string) — Unique hold identifier.
- batch_id (string) — Affected batch.
- hold_type (string) — Reason category.
- created_at (ISO8601) — Hold creation timestamp.
- owner (string) — Assigned owner.
- aging_hours (number) — Hours since creation.
- evidence_refs (Evidence File[]) — Linked evidence.
Links to
Batch, Evidence File, Decision Memo
Hold aging is a primary movement blocker and cost driver.
Packet Section
Design PartnerCompliance packet section with completeness, attestation, and COA linkage.
Key fields
- section_id (string) — Unique section identifier.
- batch_id (string) — Associated batch.
- section_type (string) — Section category.
- completeness (number) — Completeness score 0-100.
- coa_refs (COA Record[]) — Linked COA records.
- attested (boolean) — Attestation status.
Links to
Batch, COA Record, Evidence File
Packet gaps block batch movement and export readiness.
COA Record
Design PartnerCertificate of analysis record linked to batch and packet section.
Key fields
- coa_id (string) — Unique COA identifier.
- batch_id (string) — Associated batch.
- lab_ref (string) — Testing laboratory reference.
- test_date (ISO8601) — Test date.
- result_summary (string) — Summary of results.
Links to
Batch, Packet Section
COA chain completeness is required for packet readiness.
Evidence File
Design PartnerNormalized evidence with source attribution and ingestion metadata.
Key fields
- file_id (string) — Unique file identifier.
- source_type (string) — Export, screenshot, log, etc.
- ingested_at (ISO8601) — Ingestion timestamp.
- parsed_data (JSON) — Normalized content.
- completeness_flag (string) — Complete, partial, or unreadable.
Links to
Batch, QA Hold, Packet Section, Signal Event
Evidence quality determines entity linking confidence.
Signal Event
RoadmapNormalized facility signal with room/batch linkage and anomaly flag.
Key fields
- signal_id (string) — Unique signal identifier.
- room_id (string) — Source room.
- batch_id (string) — Associated batch if known.
- metric_type (string) — Temperature, humidity, VPD, pressure, etc.
- value (number) — Normalized value.
- unit (string) — Normalized unit.
- recorded_at (ISO8601) — Original timestamp.
- anomaly_flag (boolean) — Exceeds anomaly band.
Links to
Room, Batch, Evidence File
Signal events enrich batch context without prescribing action.
Task
RoadmapOperating task with owner, due date, and completion status.
Key fields
- task_id (string) — Unique task identifier.
- owner (string) — Assigned owner.
- due_date (ISO8601) — Due timestamp.
- status (string) — Open, in-progress, completed.
- linked_batch (string) — Associated batch.
Links to
Batch, Review Owner
Task aging contributes to review debt.
Review Owner
Design PartnerQualified operator responsible for a review item or decision.
Key fields
- owner_id (string) — Unique owner identifier.
- role (string) — QA supervisor, operations director, facilities engineer, etc.
- queue_depth (number) — Current open review count.
- assigned_items (Task[]) — Linked tasks and reviews.
Links to
Task, Decision Memo, QA Hold
Owner clarity gaps are a primary review blocker.
Decision Memo
Design PartnerHuman decision record with evidence attachments and unresolved items.
Key fields
- memo_id (string) — Unique memo identifier.
- batch_id (string) — Associated batch.
- decision (string) — Recorded decision text.
- decided_by (string) — Decision owner.
- decided_at (ISO8601) — Decision timestamp.
- evidence_refs (Evidence File[]) — Supporting evidence.
- unresolved_items (string[]) — Outstanding concerns.
Links to
Batch, Evidence File, Review Owner
Decision memos create reconstructable audit trails.
Distribution Commitment
DemoCustomer or channel commitment with timing and batch dependencies.
Key fields
- commitment_id (string) — Unique commitment identifier.
- batch_id (string) — Associated batch.
- promise_date (ISO8601) — Committed delivery date.
- quantity (number) — Committed quantity.
- status (string) — On-track, at-risk, blocked.
Links to
Batch, Lot, Cost Pressure Event
Commitment conflicts with batch state drive revenue timing risk.
Cost Pressure Event
DemoCost exposure tied to inventory aging, rework, or compression.
Key fields
- event_id (string) — Unique event identifier.
- batch_id (string) — Associated batch.
- event_type (string) — Aging, rework, compression.
- estimated_exposure (number) — Estimated cost impact.
- recorded_at (ISO8601) — Event timestamp.
Links to
Batch, Distribution Commitment
Cost pressure events guide resource allocation decisions.
Diligence Output
ImplementedExportable artifact for investor or operator review.
Key fields
- output_id (string) — Unique output identifier.
- output_type (string) — Readiness review, risk taxonomy, dependency graph.
- facility_id (string) — Associated facility.
- generated_at (ISO8601) — Generation timestamp.
- decision_refs (Decision Memo[]) — Linked decisions.
Links to
Facility, Decision Memo, Batch
Diligence outputs summarize operating memory for external review.
Anchor object
Batch is the center of the graph
Batch is the anchor object for movement, packet readiness, QA holds, facility signal context, and distribution dependencies. Most operating pressure converges on the batch entity. AcreFrame links batch to room, lot, hold, packet section, COA, signal event, decision memo, and distribution commitment to create a complete operating memory context.
Design partner
Validate the object model with real records.
If you are a licensed operator with real batch logs, QA records, and inventory exports, request a Facility Loop Review to validate the entity graph against your actual operating data.
AcreFrame does not provide legal advice or regulatory advice. AcreFrame does not provide pesticide guidance, cultivation treatment instructions, irrigation or watering prescriptions, or nutrient dosing prescriptions. No pesticide. No cultivation treatment prescriptions. AcreFrame does not autonomously control HVAC, irrigation, lighting, water systems, dosing, QA release, remediation, harvest, packaging, shipment, or compliance decisions. No autonomous control. Qualified human review required. AcreFrame does not provide compliance certification. No compliance certification. AcreFrame does not guarantee compliance, yield, potency, margin, savings, audit outcomes, or risk elimination. Licensed operators only where lawful.