sofhiaazzhr commited on
Commit
12f8dea
Β·
1 Parent(s): 0000030

update progress.md

Browse files
Files changed (1) hide show
  1. PROGRESS.md +4 -4
PROGRESS.md CHANGED
@@ -2,7 +2,7 @@
2
 
3
  Persistent tracker mirroring the 42-item ownership table in `REPO_CONTEXT.md` "Team β€” division of work". Update as PRs land. Future Claude Code sessions read this to know what's already done.
4
 
5
- **Last updated**: 2026-05-08 (item 41 done β€” tabular planner eval cases added; production bug fixed in `query/planner/service.py`)
6
  **Current open PR**: none β€” all Phase 2 contracts shipped on `pr/1`. Cleanup PR pending (API rewiring + Phase 1 removal).
7
 
8
  ---
@@ -73,7 +73,7 @@ Persistent tracker mirroring the 42-item ownership table in `REPO_CONTEXT.md` "T
73
  | 13 | Structured pipeline (`pipeline/structured_pipeline.py`) | B | `[x]` | PR2a (DB owner) β€” `introspect β†’ enrich β†’ merge with existing β†’ validate β†’ upsert`. Source-type-agnostic: caller supplies the introspector. `default_structured_pipeline()` factory wires production deps lazily so tests can inject mocks without `Settings()` construction. |
74
  | 14 | Triggers (`pipeline/triggers.py`) | B | `[~]` | PR2a β€” `on_db_registered` implemented (DB owner). PR1-tab β€” `on_tabular_uploaded` implemented (TAB owner). `on_document_uploaded`, `on_catalog_rebuild_requested` still stubs. |
75
  | 15 | Ingestion orchestrator (`pipeline/orchestrator.py`) | B | `[ ]` | Likely redundant β€” StructuredPipeline already takes the introspector at run() time. Revisit if a higher-level routing layer is needed. |
76
- | 16 | Document pipeline (`pipeline/document_pipeline.py`) | TAB | `[ ]` | Tabular-adjacent (file uploads). Phase 1 implementation exists at `pipeline/document_pipeline/document_pipeline.py` β€” reuse or rewrite TBD |
77
 
78
  ### Query β€” shared spine
79
 
@@ -103,7 +103,7 @@ Persistent tracker mirroring the 42-item ownership table in `REPO_CONTEXT.md` "T
103
  |---|---|---|---|
104
  | 29 | Pandas compiler (`query/compiler/pandas.py`) | `[~]` | PR3-TAB β€” `CompiledPandas` dataclass; all 12 filter ops; all 6 aggs; group_by via `pd.concat` of Series; alias-aware order_by; `_like_to_regex` (`%`β†’`.*`, `_`β†’`.`); pure module-level helpers |
105
  | 30 | Tabular executor (`query/executor/tabular.py`) | `[~]` | PR3-TAB β€” `fetch_blob` injectable for tests; blob path: single-table β†’ `{uid}/{did}.parquet`, multi-table β†’ `{uid}/{did}__{table.name}.parquet`; `asyncio.to_thread`; 10k row hard cap; errors β†’ `QueryResult.error` |
106
- | 31 | Parquet upload/download wrapper | `[ ]` | Phase 1 has `knowledge/parquet_service.py` β€” reuse or move to `storage/` in cleanup |
107
 
108
  ### Agents + chat
109
 
@@ -118,7 +118,7 @@ Persistent tracker mirroring the 42-item ownership table in `REPO_CONTEXT.md` "T
118
  | # | Item | Owner | Status | Notes |
119
  |---|---|---|---|---|
120
  | 34 | DB client endpoints (`api/v1/db_client.py`) | DB | `[ ]` | Phase 1 endpoint exists β€” rewire `/ingest` to call `pipeline.triggers.on_db_registered`. Trigger is ready as of PR2a; deferred to a later PR until both teammates ack. |
121
- | 35 | Document/tabular upload endpoints (`api/v1/document.py`) | TAB | `[ ]` | Phase 1 endpoint exists β€” rewire after enricher |
122
  | 36 | Chat stream endpoint (`api/v1/chat.py`) | B | `[ ]` | Phase 2 handler module ready (`agents/chat_handler.py`); rewiring of the actual `/chat/stream` endpoint deferred to cleanup PR to avoid breaking Phase 1 during the migration. |
123
  | 37 | Room / users endpoints (`api/v1/room.py`, `api/v1/users.py`) | B | `[ ]` | No catalog work; only touch if auth flow changes |
124
 
 
2
 
3
  Persistent tracker mirroring the 42-item ownership table in `REPO_CONTEXT.md` "Team β€” division of work". Update as PRs land. Future Claude Code sessions read this to know what's already done.
4
 
5
+ **Last updated**: 2026-05-08 (item 41 done; item 16 done; item 31 done; item 35 done β€” upload endpoint wired to on_tabular_uploaded)
6
  **Current open PR**: none β€” all Phase 2 contracts shipped on `pr/1`. Cleanup PR pending (API rewiring + Phase 1 removal).
7
 
8
  ---
 
73
  | 13 | Structured pipeline (`pipeline/structured_pipeline.py`) | B | `[x]` | PR2a (DB owner) β€” `introspect β†’ enrich β†’ merge with existing β†’ validate β†’ upsert`. Source-type-agnostic: caller supplies the introspector. `default_structured_pipeline()` factory wires production deps lazily so tests can inject mocks without `Settings()` construction. |
74
  | 14 | Triggers (`pipeline/triggers.py`) | B | `[~]` | PR2a β€” `on_db_registered` implemented (DB owner). PR1-tab β€” `on_tabular_uploaded` implemented (TAB owner). `on_document_uploaded`, `on_catalog_rebuild_requested` still stubs. |
75
  | 15 | Ingestion orchestrator (`pipeline/orchestrator.py`) | B | `[ ]` | Likely redundant β€” StructuredPipeline already takes the introspector at run() time. Revisit if a higher-level routing layer is needed. |
76
+ | 16 | Document pipeline (`pipeline/document_pipeline.py`) | TAB | `[x]` | Flattened `pipeline/document_pipeline/document_pipeline.py` (folder) β†’ `pipeline/document_pipeline.py` (file). Updated import in `api/v1/document.py`. |
77
 
78
  ### Query β€” shared spine
79
 
 
103
  |---|---|---|---|
104
  | 29 | Pandas compiler (`query/compiler/pandas.py`) | `[~]` | PR3-TAB β€” `CompiledPandas` dataclass; all 12 filter ops; all 6 aggs; group_by via `pd.concat` of Series; alias-aware order_by; `_like_to_regex` (`%`β†’`.*`, `_`β†’`.`); pure module-level helpers |
105
  | 30 | Tabular executor (`query/executor/tabular.py`) | `[~]` | PR3-TAB β€” `fetch_blob` injectable for tests; blob path: single-table β†’ `{uid}/{did}.parquet`, multi-table β†’ `{uid}/{did}__{table.name}.parquet`; `asyncio.to_thread`; 10k row hard cap; errors β†’ `QueryResult.error` |
106
+ | 31 | Parquet upload/download wrapper | `[x]` | Moved `knowledge/parquet_service.py` β†’ `storage/parquet.py`. Updated 4 import sites: `pipeline/document_pipeline.py`, `knowledge/processing_service.py`, `query/executor/tabular.py`, `query/executors/tabular.py`. |
107
 
108
  ### Agents + chat
109
 
 
118
  | # | Item | Owner | Status | Notes |
119
  |---|---|---|---|---|
120
  | 34 | DB client endpoints (`api/v1/db_client.py`) | DB | `[ ]` | Phase 1 endpoint exists β€” rewire `/ingest` to call `pipeline.triggers.on_db_registered`. Trigger is ready as of PR2a; deferred to a later PR until both teammates ack. |
121
+ | 35 | Document/tabular upload endpoints (`api/v1/document.py`) | TAB | `[x]` | Rewired `/document/process` β€” after processing CSV/XLSX, calls `on_tabular_uploaded(document_id, user_id)`. Catalog ingestion failure is logged but does not fail the request (document already ingested to vector store). |
122
  | 36 | Chat stream endpoint (`api/v1/chat.py`) | B | `[ ]` | Phase 2 handler module ready (`agents/chat_handler.py`); rewiring of the actual `/chat/stream` endpoint deferred to cleanup PR to avoid breaking Phase 1 during the migration. |
123
  | 37 | Room / users endpoints (`api/v1/room.py`, `api/v1/users.py`) | B | `[ ]` | No catalog work; only touch if auth flow changes |
124