Red Team Breaks Confidence in Vertical Farm Verification and Trace Chains

System

{{entity:Vertical Farm Environment Controller}} ({{hex:D1F77818}}), project se-vertical-farm-env. 246 requirements, 244 trace links, 10 diagrams, 17 baselines across 6 documents. Semantic lint reports 42 findings (6 high, 36 medium). Zero orphan requirements. Red team scope: full adversarial review across 7 check categories — failure modes, testability, interface plausibility, proportion, trace brittleness, implausible values, and safety integrity.

Adversarial Findings

Verification Gap (critical, 61 findings). 61 of 137 SUB+IFC requirements (45%) have no verification trace link. The entire {{entity:Zone Controller Network}} subsystem (8 reqs), all {{entity:Supervisory Control Subsystem}} reqs (4/4), and a block of late-session additions (SUB-REQ-077 through SUB-REQ-097) are completely unverified. The 62 VER requirements that exist are well-written, but they cover barely half the implementable specification.

Trace Spray (6 findings tagged). 13 of 20 SYS requirements have 5+ child links. {{sys:SYS-REQ-003}} has 19 children — a spray pattern that dilutes traceability to meaninglessness. {{sys:SYS-REQ-004}} and {{sys:SYS-REQ-006}} each have 11. While each link carries rationale text, the sheer fan-out suggests mechanical linking during decomposition rather than genuine derivation analysis. Tagged rt-mechanical-trace.

Vague Interfaces (7 findings tagged). 7 of 42 IFC requirements lack protocol, data rate, or latency specification. {{ifc:IFC-REQ-042}} (OpenADR Virtual End Node to Supervisory Control) specifies only “internal message queue” with no protocol or timing. {{ifc:IFC-REQ-028}} specifies pipe diameter but no flow rate or pressure. {{ifc:IFC-REQ-011}} and {{ifc:IFC-REQ-023}} describe signal types without timing constraints. Tagged rt-vague-interface.

Implausible Values (6 findings tagged). {{sub:SUB-REQ-066}} specifies 10 Hz PID cycle rate — a round number with no derivation from control-loop stability analysis. {{sub:SUB-REQ-012}} specifies ≤100 ms CO2 PID update period. {{sub:SUB-REQ-015}} specifies ±100 ppm CO2 accuracy. {{sub:SUB-REQ-053}} specifies ±1.0°C temperature tolerance. These round thresholds appear across unrelated subsystems without independent justification. Tagged rt-implausible-value.

Proportion Imbalance. {{entity:Supervisory Control Subsystem}} has only 4 SUB requirements versus an average of 12 per subsystem — under-specified for a SCADA-class component managing recipes, alarms, historian, and cybersecurity. 26 of 95 SUB requirements are untagged (no subsystem assignment), making per-subsystem analysis unreliable.

Coverage Gaps (13 findings from lint). 6 STK concepts (HMI, reference standards, IEC 61000-4 series, locally stored crop recipes, zone disruption avoidance, continued automated operation) have no corresponding SYS or SUB requirements. 7 SYS concepts (production operation, independent safety-rated CO2 sensor, software controller, injection, safety function) lack SUB decomposition.

Ontological Mismatches (6 high). 6 entities classified without {{trait:Physical Object}} have requirements imposing physical constraints. 9 of 15 entities classified {{trait:System-Essential}} have no redundancy or failover requirements — including the system itself.

Flagged Requirements

RefCategoryIssue
{{sys:SYS-REQ-003}}rt-mechanical-trace19 child links — trace spray
{{sys:SYS-REQ-004}}rt-mechanical-trace11 child links
{{sys:SYS-REQ-006}}rt-mechanical-trace11 child links
{{sys:SYS-REQ-011}}rt-mechanical-trace11 child links
{{sys:SYS-REQ-001}}rt-mechanical-trace10 child links
{{sys:SYS-REQ-015}}rt-mechanical-trace10 child links
{{ifc:IFC-REQ-007}}rt-vague-interfaceNo timing/latency for relay outputs
{{ifc:IFC-REQ-008}}rt-vague-interfaceNo response time for zone-inhibit signal
{{ifc:IFC-REQ-011}}rt-vague-interfaceNo protocol/timing for HVAC actuation
{{ifc:IFC-REQ-023}}rt-vague-interfaceNo timing for discrete output signals
{{ifc:IFC-REQ-027}}rt-vague-interfaceNo timing for valve actuation
{{ifc:IFC-REQ-028}}rt-vague-interfacePipe spec with no flow rate/pressure
{{ifc:IFC-REQ-042}}rt-vague-interfaceNo protocol for internal message queue
{{sub:SUB-REQ-012}}rt-implausible-value≤100 ms PID update — round, no derivation
{{sub:SUB-REQ-015}}rt-implausible-value±100 ppm accuracy — round threshold
{{sub:SUB-REQ-035}}rt-implausible-value10 seconds dry-run detection — round
{{sub:SUB-REQ-053}}rt-implausible-value±1.0°C tolerance — round, no derivation
{{sub:SUB-REQ-066}}rt-implausible-value10 Hz PID cycle — round, no stability analysis
{{sub:SUB-REQ-067}}rt-implausible-value5 seconds NOR flash persist — round

Domain Analogs Checked

AnalogSourceGaps Surfaced
{{entity:object controllers}} ({{hex:54BC1008}})Factory corpusNo recipe version control or rollback requirements
{{entity:Safety and Interlock Subsystem}} ({{hex:50B53A18}})Factory corpusNo common-cause failure analysis between safety channels
{{entity:Safety Interlock and Trip System}} ({{hex:50F77859}})Factory corpusNo proof-test coverage metric requirement
Greenhouse IPM systemsDomain knowledgeNo pest/disease outbreak isolation or containment requirements
Pharmaceutical cleanroomDomain knowledgeNo airborne contamination monitoring or particulate count requirements
flowchart TB
  n0["Vertical Farm Environment Controller"]
  n1(["Grower Technician"])
  n2(["Facility Manager"])
  n3(["Maintenance Technician"])
  n4["Building Management System"]
  n5["Crop Planning / ERP"]
  n6["Energy Management / Grid"]
  n7["Cloud Monitoring Platform"]
  n8["CO2 Bulk Supply System"]
  n9(["Harvest Crew"])
  n1 -->|Recipe adjustments, commands| n0
  n0 -->|Dashboard, alarms, analytics| n1
  n2 -->|Scheduling, overrides| n0
  n0 -->|KPI reports, fault alerts| n2
  n3 -->|Calibration, lockout, actuator test| n0
  n4 -->|Fire alarm, weather data| n0
  n0 -->|Energy consumption| n4
  n5 -->|Crop recipes, zone schedule| n0
  n0 -->|Environmental logs, harvest data| n5
  n6 -->|Pricing, DR requests| n0
  n0 -->|Load forecasts| n6
  n0 -->|Telemetry, sensor data| n7
  n7 -->|Anomaly alerts, predictions| n0
  n8 -->|Tank level, pressure| n0
  n0 -->|Valve control signals| n8
  n9 -->|Zone entry/exit| n0
  n0 -->|Zone status, safety conditions| n9

Recommendations

  1. Close verification gap (priority 1). Write VER requirements for the 61 unverified SUB/IFC reqs, prioritising SIL-tagged and safety-related requirements first.
  2. Prune trace spray. Review SYS-REQ-003’s 19 child links — most should be indirect via intermediate SUB requirements, not direct. Reduce to genuine first-order derivations.
  3. Specify interface timing. Add latency or response-time constraints to the 7 vague IFC requirements — safety-critical relay interfaces (IFC-REQ-007, IFC-REQ-008) are the highest priority.
  4. Derive performance values. Justify the 6 round-number thresholds from control-loop analysis, sensor datasheets, or crop-science literature. Replace placeholders with engineered values.
  5. Decompose Supervisory Control. 4 SUB requirements for a SCADA system is implausible — expect 15+ covering historian, alarm management, recipe engine, cybersecurity, HMI, and redundancy.
  6. Tag and assign 26 orphan SUB reqs. Without subsystem tags, per-subsystem coverage analysis is impossible.
  7. Add biosecurity/IPM requirements. Vertical farming’s controlled environment makes it vulnerable to rapid pathogen spread — no requirements address outbreak detection, zone isolation for contamination, or air filtration monitoring.
  8. Add redundancy/failover for System-Essential entities. 9 of 15 classified entities lack any redundancy requirement despite being tagged System-Essential.

Verdict

Informational. 19 requirements tagged across 3 categories (6 rt-mechanical-trace, 7 rt-vague-interface, 6 rt-implausible-value). 61 SUB/IFC requirements unverified (45%). 42 semantic lint findings (6 high, 36 medium). 13 STK/SYS coverage gaps. 4 domain gap findings stored. The specification has genuine engineering depth in safety interlock and CO2 enrichment subsystems, but verification coverage, trace discipline, and supervisory control decomposition are materially incomplete.

← all entries