Skip to content

Resource Measurement and Physical Acceptance Records ​

This page supplements the recording method of the Release Checklist; the endpoints follow the current development candidate. All field items below are currently NOT_RUN; this page is not a report of deployment or acceptance. Feature descriptions, candidate results, and field capabilities are in Candidate Status and the Capability Matrix.

Before starting, fix the specific operation authorization, device identity and wiring, stable firmware/web summary, config backup, and recovery method. Deployment must have actual write and verification evidence for this run; historical COM/IP cannot serve as the current identity. Restarts, power cuts, config/RTC writes, fault injection, and output actions are each listed in the authorization scope. Output cases with unknown conditions stay NOT_RUN.

Common Records per Test Run ​

Each round uses a new runId and evidence directory, keeping failures and their subsequent recovery. Record at least:

CategoryRequired content
VersionBoard/hardware revision, chip, measured PSRAM state, candidate summary, firmware/web SHA256, deployment report summary, observer version
FieldAuthorization record, identity and wiring evidence references, modules/instruments, allowed recovery actions, stop conditions
ConditionsConfig summary, business/network/server load, instance counts, sampling frequency, warm-up rules, steady-state window, peak observation method, and acceptance thresholds
Per sampleCase/event ID, boot session, config summary, host UTC and monotonic timestamps, device uptime and wraparound, interface and HTTP status, elapsed time, raw response file and SHA256
ResultsValid samples/expected count, missed-sample reasons, first failure, first fresh success after recovery, residual faults; command results, readback, and physical feedback listed separately

Identity, configuration, and raw responses are preserved per Recovery and Configuration Preservation; public reports cite only desensitized summaries. When there is no data, record unknown or not-measured — do not backfill with zeros.

Six Feature/Resource Comparison Groups ​

Each applicable optional feature is compared under the same board, firmware, and business conditions across the states below. Each group keeps its own config summary; config samples from different groups must not be stitched into one fixed-config long-term run.

StateOperating conditionKey observations
S0All optional features off, keeping measurement-required entriesBaseline and still-present shared services
S1Target feature enabled, no instancesWhether useless tasks/allocations appear; actual owner and pending-restart state
S2Single instanceValid sampling/actions, shared vs instance resources
S3Multiple instancesCapacity admission, queues, latency, memory and stack pressure
S4Disabled, taking effect per the declared method or restartConfig retention; whether tasks/instances/leases actually retire
S5Re-enable and recoveryNew instances and fresh business data, resource recovery, whether old faults are kept

First record at least three cold boots and one stable baseline, each boot numbered independently. Each group compares steady state, pre/post-operation, and predefined peak windows under the same warm-up and sampling rules; cold boots and S4 restarts must be within the maintenance scope. Initialization failures, low memory, and network/bus faults get separate windows; failure samples are not discarded.

Three cold boots only establish the measurement baseline and do not replace the planned lifecycle targets. Create three additional record types: 100 start/stop or reconfiguration cycles, 20 cold boots, and 20 warm boots; freeze the actual steps, allowed scope, and exit thresholds for each before execution. Per iteration, save the cycle number, boot session, operation and effect results, before/after resource/config evidence, failure/recovery, and physical feedback; summarize planned, attempted, completed, succeeded, failed, and unfinished counts with reasons. Not-executed and interrupted/missing-evidence are recorded separately; one successful recovery must not be filled in as a whole-batch pass.

Endpoints and units follow Health Monitor and API Reference:

EvidenceCollection entry and fieldsInterpretation limits
Lightweight internal DRAMdata.memory.dram8Free/dram8Largest from /api/system/status, in bytesDo not substitute total heap or PSRAM headroom for internal DRAM
Per-pool memorydata.memory.capabilityPools from full /api/system/info?full=1 or /api/system/diag-bundle; keep observed/free/minFree/largestBlock and sampledAtUptimeMs of internal8/internalDma/psram8Bare /api/system/info is slim by default; explicit full can still degrade under memory protection — probe/health or slim responses do not replace the full snapshot; pools overlap and cannot be summed; minFree is not the peak of this operation
Runtime resourcesdata.runtime from the raw /api/peripherals/resources response and the owner, generation, busy, fault, retiring, cleanupPending fields available per sourceNot atomic across sources; unregistered SDK resources stay unknown; config removal does not prove actual release
Task stackAuthorized developer single POST /api/system/task-stack-snapshot; keep HTTP, success/status/reason, completeAtCapture, count changes, captureDurationUs, and taskNumber/highWaterBytesNo polling, no bypassing the 30-second cooldown; task numbers do not align across restarts; unknown/busy/over-capacity is not an empty task list, and a 0 watermark cannot be treated as unknown
BusinessSuccess/expected counts, data quality/age, queue/timeout/allocation failures, protection/degradation, reset reasons, latency p95/p99/maxCPU values without a measured source stay unknown; averages do not replace worst cases

Both the full per-pool response and the single stack scan have overhead; record the request order and its disturbance window uniformly; a stack scan may pause scheduling, so observe business latency and WDT in the same window. Discrete sampling can miss transient peaks — mark explicitly when uncovered. SDK heap low points also do not guarantee simultaneity.

Static Flash/RAM is taken from map/bin under the same toolchain conditions. Runtime toggles do not shrink firmware; S2-S1 and S3-S2 can only serve as same-observation difference values, not directly called a fixed per-instance cost. Complete six-group data does not automatically prove all feature combinations, fault recovery, or long-term leak-freeness.

RTC Retention and Timekeeping Records ​

Follow the DS1302 notes. First verify the module, battery, voltage, charging configuration, and safe power-cut method; freeze the calendar interpretation, timezone, run/pause state, outage duration, and error tolerance. Without an independent reference time and its uncertainty, accuracy stays undetermined; this flow does not require auto time sync or changing trickle charging.

  1. Before the power cut, save the RTC calendar/run state, the independent reference reading, and the collection start/end times. Also record the system timeSource/timeQuality/timeSourceAuthenticated/timeSyncAgeMs/timeSyncSequence/activeTimezone; the system's own source record is not an independently accurate reference.
  2. On a separately authorized test device, remove the main power while keeping the verified backup supply; record the actual outage start/end reference timestamps, supply, and environment observations. Do not perform the power cut when return-supply/load safety is unclear.
  3. After recovery, before any operation that could change the RTC calendar, save a second RTC/reference pair, the readback delay, calendar validity, and run state. Windows where a write occurred or cannot be ruled out cannot be used to prove battery retention.
  4. Judge "readable / keeps counting" and "timekeeping accuracy" separately. With the calendar interpretation fixed and no time-sync or timezone ambiguity, record the two RTC-minus-reference deviations offset0/offset1; the observed ppm is (offset1-offset0)/reference elapsed seconds x 10^6. Also give the reading resolution, reference, and read-delay uncertainties; when the window is too short to judge, do not fill in 0ppm.
  5. Save the actual values, sampling times, source, and age for web, rules/MQTT, and applicable physical displays separately. Different sampling times need not match verbatim; a correct format does not mean retention or accuracy passed.

Records keep module/battery evidence, calendar interpretation, reference and uncertainty, the two raw RTC/reference pairs, read start/end, actual outage duration, deviation/drift, error tolerance, any writes/source changes during the window, and raw evidence.

Peripheral Fault Windows and Physical Feedback ​

Reuse each module's existing configuration steps and add the records below to the same case. Fault methods, expected safe states, stop conditions, and recovery actions must be determined in advance; unknown responses are not auto-replayed.

ScopeMinimum records in the same window
SDCard/filesystem, SPI/CS and shared clients, original length/SHA256 of dedicated test files, re-read length/SHA256 after write, mount/owner/recovery state and capacity sample age; authorized full-card/power-cut faults only on sacrificial media; hot-swap removal is not supported by default
UART / ModbusPeer and logic level/transceiver, controller/pins/parameters, actual sent/received bytes and times, expected frames/boundaries, errors and generations, first frame after recovery; generic text counts do not replace Modbus CRC or hardware-overflow evidence; fault inputs must not connect unauthorized output rules
ADS1115Board/PSRAM, module, MUX/range/rate, input electrical conditions, reference instrument and calibration info, reference value/raw code/converted value/quality/age/tolerance, NACK or disconnect windows and recovery samples; range is not the allowed port voltage
MCP23017RESET/power evidence, A7/B7 and actual channels, start/stop physical levels/load feedback, input reference and readback, fault/retire/recovery timestamps; a register ACK does not prove an external RESET or load safety
PCA9685Independent power-on/OE actual level, shared frequency, channel, measured frequency/pulse width and instruments, enable/disable/stop physical results, offline/power-loss and new-session recovery; follow the prepare/power-on confirmation flow; an angle command is not a measured angle, and OE HIGH is not load power-off
RGB panel/touchDedicated firmware and board/panel revisions, display orientation/edges/tearing/black screen, press/release/navigation and touch points, backlight, load/duration, picture evidence and failure times, HTTP/sampling/stack/DMA in the same window; web preview or scan endpoints do not replace physical display/touch; buzzers and outputs are authorized separately

Each fault event keeps eventId, preconditions, fault method, expected safe state, first failure, attempt count, command/readback/physical results, recovery actions, first fresh success, before/after resources, residual faults, raw evidence, and conclusion. A successful recovery does not overwrite the original failure; not attempted is NOT_RUN, unmet preconditions are BLOCKED.

Save the SD file SHA256 and the HTTP response SHA256 separately. When using existing web endpoints for byte comparison, first pick a known ASCII test file of at most 4096 bytes; after GET /api/peripherals/read?id=<SD logical ID>&action=read&path=<sandbox file>&maxBytes=4096 succeeds, UTF-8-encode the data.content from the decoded JSON to get the file bytes, and verify data.length, the expected length, and SHA256; do not add a BOM, convert line endings, or compute a "file hash" over the whole JSON response. Oversized files are rejected for whole reads and the current endpoint has no chunked download; files over 4096 bytes or binary files require separate authorized safe-unmount/power-down and full card-reader readback evidence — without it, file integrity stays unconfirmed. A successful write or capacity change cannot replace readback, much less prove post-power-loss durability.

Handover to Long-Term Stability and Independent Trials ​

Complete the 2-hour exploration, 24-hour mixed load, and 7-day fixed-candidate observation per the release checklist, keeping the valid span, sample counts, gaps, and cumulative failures. Firmware or key config changes start a new window; stable environment and fault injection are windowed separately.

The current test-device-soak.py serves COM15/ECM50-A-type business and test-screen-panel-soak.mjs serves panel business; changing the URL does not automatically adapt to other boards or H1 scenarios. Both scripts' existing internal memory samples only contain dram8Free/dram8Largest; per-pool DMA/PSRAM and full task-stack data must be collected as above and tied to the same run. Before running on other boards, define the actual entry, fields/units, valid samples, and business counts; unprepared combinations stay BLOCKED — do not reshape field configs to reuse a script.

A PASS from the two scripts also does not automatically complete the originally planned 24-hour head/tail memory screening. test-device-soak.py currently has no head/tail median-decline judgment; the panel script marks sustainedHeapDecline only with at least 60 samples, a head/tail difference over 8192 bytes, and over 25% of baseline — it is not the planned initial screening line max(2 KiB, 2% of baseline). Attach the records below, analyzing internal DRAM and the largest contiguous block separately per the pre-frozen same-load, warm-up, and window definitions; do not re-pick windows to meet thresholds.

Record itemRequired content
Window and sourceMetric raw path, unit, run/boot/config summary, head/tail window start/end, expected/valid sample counts, missed/abnormal retention method, raw sample references
Screening calculationHead/tail medians, decline bytes and ratio, adopted threshold and approval source; the originally planned line is noted separately as an initial screen, not a leak verdict
VerdictNot measured, missing data/incomparable, meets frozen screening condition, or over-threshold pending investigation; keep investigation conclusions, do not backfill with a script PASS
Long-term review7-day trend, sustained one-way decline, unrecovered objects, and same-window business/recovery evidence; the protection line and agreed margin for rated features are checked separately

NC01-NC04 and V14 follow the No-code Acceptance Cards. Technical windows, physical accuracy/load feedback, and independent user operations are accepted separately; automation tools do not sign off on independent trials.

FastBee | fastbee.cn