Skip to content

Commit 404af39

Browse files
committed
DetTrace: add regression intelligence and protocol validation pack
1 parent f122105 commit 404af39

10 files changed

Lines changed: 193 additions & 0 deletions

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2152,3 +2152,15 @@ The knowledge base covers:
21522152
- calibration drift
21532153
21542154
Safe scope: heuristic diagnostics knowledge base for replay review. This does not claim AI, trained ML, expert systems, production incident automation, hardware-lab ownership, drivers, firmware, kernel, or real hardware emulation.
2155+
2156+
---
2157+
2158+
## Regression Intelligence and Protocol Validation Pack
2159+
2160+
DetTrace includes heuristic regression-risk analysis under `regression_intelligence/`.
2161+
2162+
It maps new build/replay signals to known regression families, risk levels, confidence scores, and recommended release/debugging actions.
2163+
2164+
DetTrace also includes a protocol validation pack under `protocol_validation_pack/` with simulated I2C-style, UART-style, BLE-style, and TCP-style state-machine replay cases.
2165+
2166+
Safe scope: heuristic diagnostics and protocol-state replay simulation. This does not claim production release automation, driver development, firmware ownership, kernel engineering, packet capture, protocol-stack ownership, or hardware-lab testing.

protocol_validation_pack/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Protocol Validation Pack
2+
3+
Simulated protocol-state replay artifacts for validation and diagnostics review.
4+
5+
Covered protocols:
6+
7+
- I2C-style timeout
8+
- UART-style checksum/frame failure
9+
- BLE-style reconnect lifecycle
10+
- TCP-style retransmit timeout
11+
12+
Safe scope: protocol-state replay simulation only. This does not claim driver, firmware, kernel, packet capture, protocol-stack, or hardware-lab ownership.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"protocol": "BLE-style",
3+
"safe_claim": "protocol-state replay simulation; not BLE stack or firmware development",
4+
"expected_flow": ["advertise", "connect", "pair", "service_discovery", "ready"],
5+
"observed_flow": ["advertise", "connect", "disconnect", "reconnect", "service_discovery", "ready"],
6+
"diagnosis": {
7+
"first_divergence_index": 2,
8+
"expected_event": "pair",
9+
"actual_event": "disconnect",
10+
"failure_family": "disconnect"
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"protocol": "I2C-style",
3+
"safe_claim": "protocol-state replay simulation; not driver or firmware development",
4+
"expected_flow": ["start", "address_ack", "register_write", "data_ack", "stop"],
5+
"observed_flow": ["start", "address_ack", "register_write", "timeout", "stop"],
6+
"diagnosis": {
7+
"first_divergence_index": 3,
8+
"expected_event": "data_ack",
9+
"actual_event": "timeout",
10+
"failure_family": "timeout"
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"protocol": "TCP-style",
3+
"safe_claim": "protocol-state replay simulation; not packet capture or TCP stack development",
4+
"expected_flow": ["syn", "syn_ack", "ack", "data_send", "ack_received"],
5+
"observed_flow": ["syn", "syn_ack", "ack", "data_send", "timeout", "retransmit", "ack_received"],
6+
"diagnosis": {
7+
"first_divergence_index": 4,
8+
"expected_event": "ack_received",
9+
"actual_event": "timeout",
10+
"failure_family": "timeout"
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"protocol": "UART-style",
3+
"safe_claim": "protocol-state replay simulation; not driver or firmware development",
4+
"expected_flow": ["frame_start", "payload_read", "checksum_ok", "frame_end"],
5+
"observed_flow": ["frame_start", "payload_read", "checksum_error", "frame_drop"],
6+
"diagnosis": {
7+
"first_divergence_index": 2,
8+
"expected_event": "checksum_ok",
9+
"actual_event": "checksum_error",
10+
"failure_family": "state_corruption"
11+
}
12+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/usr/bin/env python3
2+
import argparse
3+
import json
4+
from pathlib import Path
5+
6+
KNOWN = Path("regression_intelligence/known_regressions.json")
7+
REPORT_JSON = Path("regression_intelligence/risk_report.json")
8+
REPORT_MD = Path("regression_intelligence/risk_report.md")
9+
10+
11+
def main():
12+
parser = argparse.ArgumentParser(description="Analyze regression risk from replay/build signals")
13+
parser.add_argument("--build", default="candidate_build")
14+
parser.add_argument("--signals", required=True, help="Comma-separated signals")
15+
args = parser.parse_args()
16+
17+
signals = {s.strip() for s in args.signals.split(",") if s.strip()}
18+
known = json.loads(KNOWN.read_text())["known_regressions"]
19+
20+
matches = []
21+
for reg in known:
22+
overlap = sorted(signals & set(reg["signals"]))
23+
if overlap:
24+
matches.append({
25+
"regression_id": reg["id"],
26+
"family": reg["family"],
27+
"risk": reg["risk"],
28+
"confidence": reg["confidence"],
29+
"matched_signals": overlap,
30+
"recommended_action": reg["recommended_action"]
31+
})
32+
33+
risk_rank = {"low": 1, "medium": 2, "high": 3}
34+
highest = "low"
35+
if matches:
36+
highest = max((m["risk"] for m in matches), key=lambda r: risk_rank[r])
37+
38+
report = {
39+
"build": args.build,
40+
"safe_claim": "heuristic regression-risk analysis for replay diagnostics; not production release automation",
41+
"known_regression_risk": highest,
42+
"matched_failures": matches,
43+
"release_recommendation": "hold" if highest == "high" else "review" if highest == "medium" else "proceed"
44+
}
45+
46+
REPORT_JSON.write_text(json.dumps(report, indent=2))
47+
REPORT_MD.write_text(
48+
"# Regression Intelligence Report\n\n"
49+
f"- build: `{report['build']}`\n"
50+
f"- known regression risk: `{report['known_regression_risk']}`\n"
51+
f"- release recommendation: `{report['release_recommendation']}`\n\n"
52+
"## Matched failures\n\n" +
53+
"\n".join(
54+
f"- `{m['regression_id']}` family=`{m['family']}` risk=`{m['risk']}` confidence=`{m['confidence']}` signals=`{m['matched_signals']}` action={m['recommended_action']}"
55+
for m in matches
56+
) + "\n"
57+
)
58+
59+
print(json.dumps(report, indent=2))
60+
61+
62+
if __name__ == "__main__":
63+
main()
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"safe_claim": "heuristic regression-risk analysis for replay diagnostics; not production release automation",
3+
"known_regressions": [
4+
{
5+
"id": "reg_retry_storm_001",
6+
"family": "retry_storm",
7+
"signals": ["retry_storm", "duplicate_retry_window", "timeout_chain"],
8+
"risk": "high",
9+
"confidence": 0.91,
10+
"recommended_action": "block release until retry backoff and ACK ordering are reviewed"
11+
},
12+
{
13+
"id": "reg_enum_timeout_002",
14+
"family": "enumeration_failure",
15+
"signals": ["config_read_timeout", "missing_bar_assignment", "stale_device_state"],
16+
"risk": "high",
17+
"confidence": 0.89,
18+
"recommended_action": "rerun enumeration replay and verify device_ready is not falsely reported"
19+
},
20+
{
21+
"id": "reg_link_recovery_003",
22+
"family": "displayport_recovery",
23+
"signals": ["lane_align_timeout", "retry_link_training", "display_active"],
24+
"risk": "medium",
25+
"confidence": 0.84,
26+
"recommended_action": "verify link-training retry reaches stable display_active state"
27+
}
28+
]
29+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"build": "candidate_42",
3+
"safe_claim": "heuristic regression-risk analysis for replay diagnostics; not production release automation",
4+
"known_regression_risk": "high",
5+
"matched_failures": [
6+
{
7+
"regression_id": "reg_retry_storm_001",
8+
"family": "retry_storm",
9+
"risk": "high",
10+
"confidence": 0.91,
11+
"matched_signals": [
12+
"duplicate_retry_window",
13+
"retry_storm",
14+
"timeout_chain"
15+
],
16+
"recommended_action": "block release until retry backoff and ACK ordering are reviewed"
17+
}
18+
],
19+
"release_recommendation": "hold"
20+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Regression Intelligence Report
2+
3+
- build: `candidate_42`
4+
- known regression risk: `high`
5+
- release recommendation: `hold`
6+
7+
## Matched failures
8+
9+
- `reg_retry_storm_001` family=`retry_storm` risk=`high` confidence=`0.91` signals=`['duplicate_retry_window', 'retry_storm', 'timeout_chain']` action=block release until retry backoff and ACK ordering are reviewed

0 commit comments

Comments
 (0)