docs: map msglib dotnet wrapper path
This commit is contained in:
@@ -1972,12 +1972,12 @@ Evidence precheck result:
|
||||
|
||||
**Goal:** Statically inspect the extracted DB wrapper assemblies to map candidate table/model names and connection-string/password/decryption flow for future read-only `MsgLib.db` access.
|
||||
|
||||
**Planned files:**
|
||||
**Files:**
|
||||
- Modify: `docs/source-discovery/capability-source-matrix.md`
|
||||
- Modify: `docs/current-status-card.md`
|
||||
- Modify: `docs/superpowers/plans/2026-07-09-stage-c-log-backed-receive-messages-loop.md`
|
||||
- Optionally create a focused source-discovery note under `docs/source-discovery/`.
|
||||
- Optionally create ignored metadata under `runs/`; do not commit binaries, raw DB bytes, decrypted content, or personal values.
|
||||
- Create: `docs/source-discovery/2026-07-10-dotnet-wrapper-static-analysis.md`
|
||||
- Ignored metadata under `runs/offline-evidence-intake/zyl-qqfile-20260709/metadata/`; no binaries, raw DB bytes, decrypted content, or personal values are committed.
|
||||
|
||||
**Planned behavior:**
|
||||
- Inspect .NET assembly metadata/IL read-only for:
|
||||
@@ -1986,20 +1986,26 @@ Evidence precheck result:
|
||||
- `Utilities.Lib.DBModel.dll`
|
||||
- `Utilities.Lib.DBSQLite.dll`
|
||||
- `RepairDatabase.exe`
|
||||
- Include direct dependency IL only when needed to resolve model fields and connection flow.
|
||||
- Extract only table/model/method/property names and connection/decryption flow summaries.
|
||||
- Decide whether C26 can attempt copied-DB read-only schema extraction or must stay blocked.
|
||||
- Do not execute client binaries or modify DB files.
|
||||
- Do not add write/send/file-download behavior.
|
||||
|
||||
- [ ] **Step 1: Generate static wrapper metadata**
|
||||
- [x] **Step 1: Generate static wrapper metadata**
|
||||
|
||||
Use read-only metadata/IL tools or string extraction. Keep output under ignored metadata.
|
||||
Generated IL and structured ignored metadata with `ildasm`/Python under:
|
||||
|
||||
- [ ] **Step 2: Write source-discovery conclusion**
|
||||
```text
|
||||
runs/offline-evidence-intake/zyl-qqfile-20260709/metadata/c25-il/
|
||||
runs/offline-evidence-intake/zyl-qqfile-20260709/metadata/c25-wrapper-il-summary.json
|
||||
```
|
||||
|
||||
Record likely tables/models and the safest next read path.
|
||||
- [x] **Step 2: Write source-discovery conclusion**
|
||||
|
||||
- [ ] **Step 3: Verify and commit docs**
|
||||
Created `docs/source-discovery/2026-07-10-dotnet-wrapper-static-analysis.md` with recovered connection/password flow and target table/model mapping.
|
||||
|
||||
- [x] **Step 3: Verify and commit docs**
|
||||
|
||||
Run:
|
||||
|
||||
@@ -2013,6 +2019,68 @@ Expected: all exit 0. Commit exact C25 paths only and rewrite the next loop from
|
||||
|
||||
---
|
||||
|
||||
## Loop C25 Result
|
||||
|
||||
Static wrapper analysis result:
|
||||
|
||||
- `HYHC.IMPP.DAL.IMPPDAL` configures the DB through `Utilities.Lib.DBModel.Config.DBConfigElement` with `DBID = 0x1a0a`, `DBConInfoType = 1`, `DatabaseName = dbPath`, `Password = "123"`, and `DBFactory = "Utilities.Lib.DBSQLite.Core.SQLiteDBFactory,Utilities.Lib.DBSQLite"`.
|
||||
- `Utilities.Lib.DBBase.Base.DBInteractionBase.GetDBConStr(...)` chooses between direct `ConStr`, generated connection string, or an `IConStrDecryption` implementation. The observed DAL path uses generated SQLite connection strings rather than the earlier log DES policy.
|
||||
- `Utilities.Lib.SQLiteInteraction.Interaction.GenerateDBConStr(...)` builds a `System.Data.SQLite.SQLiteConnectionStringBuilder`, sets `DataSource`, sets `Password` when present, forces `ReadOnly = true`, and returns the connection string. `GetConnection(...)` then creates `System.Data.SQLite.SQLiteConnection`.
|
||||
- Candidate schema sources are now mapped:
|
||||
- contact/display names: `TD_Roster`, `tblRecent`, `tblChatLevel`, `tblPersonMsg`;
|
||||
- group/display/member names: `tblMsgGroupPersonMsg`, `TD_WorkGroupAuth`, `tblRecent`;
|
||||
- receive messages: `tblPersonMsg`, `tblMsgGroupPersonMsg`;
|
||||
- file metadata: `tblRecvFile` and file-message rows in message tables.
|
||||
- Decision: C26 can attempt copied-DB read-only schema extraction using the bundled `System.Data.SQLite.dll` and the recovered wrapper password. It must query schema/counts only before any DB-backed feature implementation.
|
||||
|
||||
---
|
||||
|
||||
## Loop C26: Copied `MsgLib.db` read-only schema extraction
|
||||
|
||||
**Goal:** Validate whether copied `MsgLib.db` files can be opened read-only through the recovered wrapper connection flow, then extract schema/table/column metadata only.
|
||||
|
||||
**Planned files:**
|
||||
- Modify: `docs/source-discovery/capability-source-matrix.md`
|
||||
- Modify: `docs/current-status-card.md`
|
||||
- Modify: `docs/superpowers/plans/2026-07-09-stage-c-log-backed-receive-messages-loop.md`
|
||||
- Create: `docs/source-discovery/2026-07-10-msglib-readonly-schema-extraction.md` if the probe yields non-trivial evidence.
|
||||
- Ignored metadata under `runs/offline-evidence-intake/zyl-qqfile-20260709/metadata/`; do not commit DBs, raw rows, message bodies, personal values, or helper binaries.
|
||||
|
||||
**Planned behavior:**
|
||||
- Use copied DB candidates under `runs/offline-evidence-intake/zyl-qqfile-20260709/extracted/msgdb-*` only.
|
||||
- Use the bundled `System.Data.SQLite.dll` from the extracted iSphere client files.
|
||||
- Open with the recovered wrapper path equivalent: `Data Source=<copy>;Password=123;Read Only=True;Pooling=False`.
|
||||
- Query only `sqlite_master`, `PRAGMA table_info(...)`, and safe row counts for target tables.
|
||||
- Save schema metadata under ignored `runs/.../metadata/`.
|
||||
- If direct bundled `System.Data.SQLite` open fails, record the exact exception and plan the next wrapper-assisted schema probe.
|
||||
- Do not add write/send/file-download behavior.
|
||||
|
||||
- [ ] **Step 1: Build a read-only schema probe**
|
||||
|
||||
Create a temporary/ignored probe that references the bundled SQLite assembly and opens copied DB files read-only with password `123`.
|
||||
|
||||
- [ ] **Step 2: Extract schema-only metadata**
|
||||
|
||||
Collect table names, column names/types, and safe row counts for candidate business tables. Do not dump message/contact/file rows.
|
||||
|
||||
- [ ] **Step 3: Record conclusion and next implementation slice**
|
||||
|
||||
If schema open succeeds, write C27 as DB-backed contact/group display-name enrichment or DB-backed receive-message source design. If schema open fails, write C27 as wrapper-assisted open diagnosis.
|
||||
|
||||
- [ ] **Step 4: Verify and commit docs**
|
||||
|
||||
Run:
|
||||
|
||||
```powershell
|
||||
git diff --check
|
||||
go test ./...
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/verify-go-mcp.ps1
|
||||
```
|
||||
|
||||
Expected: all exit 0. Commit exact C26 docs only and rewrite the next loop from actual results.
|
||||
|
||||
---
|
||||
|
||||
## Self-Review
|
||||
|
||||
- Spec coverage: the plan follows the user's cyclic requirement: plan first, implement one loop at a time, update the next loop after each result, and ask only on blockers.
|
||||
|
||||
Reference in New Issue
Block a user