Open work. When something is picked up, move it into PROJECT_LOG.md with a
date and the outcome.
- Scout done, saved to
docs/scout-2026-08-28.md, decisions inPROJECT_LOG.md. - Pin Python env (
requirements.txt):mlxtend,pandas,pyarrow,scikit-learn,pytest, andspmf.py(or subprocess-driven SPMF jar) for PrefixSpan.prefixspanPyPI package as fallback only. - Confirm UNVERIFIED-license items from scout: Alibaba clusterdata primary-source license, Kaggle Azure PdM license string, direct Microsoft statement of Azure PdM synthetic origin.
- Fetch Azure PdM via Kaggle CLI (
arnabbiswas1/microsoft-azure-predictive-maintenance) intodata/raw/azure/. Record checksums. - Loader
src/ingest/azure.py: read the five CSVs (PdM_telemetry,PdM_errors,PdM_failures,PdM_maint,PdM_machines), emit(entity_id, timestamp, event_type)parquet intodata/processed/azure_events.parquet. - NormalizeerrorID->software_error(Azure errors are non-fatal). - NormalizePdM_maintnon-failure events ->maintenance. - NormalizePdM_failures->component_replacement+terminal_failuremarker; note that failures are a strict subset of maint. - Sanity numbers: row counts per source table, distinct machines (=100 expected), time range 2015-01-01 to 2016-01-01.
- Timeline spot-check notebook: ten random machines, side-by-side raw CSV vs normalized event stream.
- Fetch cluster-trace-v2018 via
fetchData.sh. - Loader
src/ingest/alibaba.py: extract discrete status transitions frombatch_task/batch_instance/machine_meta. - Handleend_time == 0on non-terminated instances (do not treat as timestamp 1970-01-01). - Striptask_nameDAG encoding totask_type. - MapFailed / Interrupted / Cancelled->task_failure; machine-status changes ->hardware_errorormaintenance. - Vocab reconciliation table
docs/vocab-mapping.md: shared vocab column mapped side-by-side to Azure PdM columns and Alibaba columns. - Timeline spot-check notebook mirroring the Azure one.
- Window builder with window-size sweep and matched controls.
- Per-window parquet artifact.
- Itemset miner (mlxtend Apriori + FP-Growth) with the standing random-label invariant.
- Sequence miner (PrefixSpan) with the standing order-shuffle invariant.
- Significance layer: RR, OR, permutation p-value, BH correction.
- Baseline event-count classifier.
- Feature-set comparison harness (count / itemset / sequence / combined).
- Cross-entity, cross-period, cross-failure-type stability sweep.
- SPADE and GSP as sanity cross-checks against PrefixSpan.
- Interactive pattern browser (small Streamlit or plain HTML) for the
final
results/patterns/set.