From 2a9af05464c649476527c4bf19c74b4b30a89f88 Mon Sep 17 00:00:00 2001 From: PedroHMCosme Date: Tue, 14 Jul 2026 16:33:42 -0300 Subject: [PATCH] SIENTIAPDE-1972: F1 close-out - ledger de commits + carry-forward notes (Task 10.end) --- docs/superpowers/plans/2026-07-13-opc-gateway.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/superpowers/plans/2026-07-13-opc-gateway.md b/docs/superpowers/plans/2026-07-13-opc-gateway.md index 55348b3..258a904 100644 --- a/docs/superpowers/plans/2026-07-13-opc-gateway.md +++ b/docs/superpowers/plans/2026-07-13-opc-gateway.md @@ -71,7 +71,15 @@ At the end of each phase Fx, before starting the next: - Also fixed a pre-existing test flake in `a08fd88` (gc.collect() in test_ingestor_manager) — include in the F0 code PR. - ⚠️ The branch also carries **docs** commits (design/spec/plan) interleaved in time (`6f6f3bf`, `c980092`, `524f4d6`, `8a05ff7`, `941c6c0`, `7cffc26`, `bbe10a4`, `09e4290`, plus the gRPC/Kafka doc updates). Those are **not** F0 code — the aig-docs equivalents already ship in PR #76; the repo `docs/superpowers/**` commits can go in a separate small docs PR or ride with F0. Keep them out of the F0 **code** PR scope. -**F1 — Subscription reads (C1):** _(fill at F1 close-out)_ +**F1 — Subscription reads (C1)** — base `00f919c`. Status: ✅ complete, 168 unit tests green, ruff clean. +- `44df022` feat(gateway): slot v2 loader (contract C1) (Task 8) +- `ae88ac6` feat(gateway): DataSink.publish_reading multi-name fan-out (Task 9) +- `323bf24` refactor(gateway): remove legacy Kafka egress (MongoDB-only) (Task 9b) +- `00c74e5` feat(gateway): SubscriptionEngine multi-name fan-out (C1) (Task 10) +- Carry-forward to F4/later (from F1 reviews): + - **Task 18 (wiring):** decide how many `SubscriptionEngine` instances the app builds. Current code keeps a single engine-wide `non_receive_count` and `check_opc_listenning(server_name)` takes a param — safe only if **one engine per OPC server**. If one engine is shared across servers, a datachange on server A masks silence on server B → must partition cycle/non-receive state per server. Make this deliberate at wiring time. + - **Task 12 (DataSink):** drop the currently-unused `metadata` param from `DataSink.__init__` while adding `update_write_status`. + - **F4 cleanup:** `README.md` and `tests/functional/test_single_node.py`/`conftest.py` still reference Kafka (stale/commented dead code) — remove during F4 hardening (Task 21 sweep). **F2 — Active write via NATS (C2, C3):** _(fill at F2 close-out)_ **F3 — Active reads + gRPC (C4):** _(fill at F3 close-out)_ **F4 — Wiring, health, deploy, hardening:** _(fill at F4 close-out)_ @@ -583,9 +591,9 @@ async def test_datachange_fans_out(): --- ### Task 10.end: F1 close-out (see [Phase Delivery](#phase-delivery--commit-ledger)) -- [ ] Full `pytest tests` green + `ruff` clean. -- [ ] Record F1 commit SHAs (base + range) in the [Commit Ledger](#commit-ledger). -- [ ] Do NOT open the PR yet. +- [x] Full `pytest tests` green (168) + `ruff` clean. +- [x] F1 commit SHAs recorded in the [Commit Ledger](#commit-ledger) (base `00f919c`). +- [ ] PR intentionally NOT opened yet — opened only after F4 closes. ---