Commit Β·
12f8dea
1
Parent(s): 0000030
update progress.md
Browse files- 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
|
| 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 | `[
|
| 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 | `[
|
| 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 | `[
|
| 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 |
|