Orchestrata Ultimate › Sessions › Session 233
Session 233
| Field | Value |
|---|---|
| Session | 233 (2 records) |
| Date | 2026-07-14 00:55 |
| Model | Claude Opus 4.8 |
| Length | 6h 55m |
| Tag | session-233-2026-07-14-0055 |
| Source | archive (context.history.md) |
‹ previous · next › · range page · timeline
Prose pending.
Record 1 — 2026-07-14 00:55 · Claude Opus 4.8 · archive (context.history.md)
Purpose
P1 #62: volk↔volk messaging + orchestrator↔volk heartbeat awareness
Work log
- P1 #62 investigation: message_volk tool routes real CXP packets; VolkRegistry has heartbeat/health/in-flight machinery; IntentDispatcher records dispatch-time heartbeat; IntentRouter does NOT filter by health status; no orchestrator health monitor or peer-status exposure to volks at 2026-07-14 00:56
- P1 #62 implementation: health-aware IntentRouter; heartbeat-driven ACTIVE/INACTIVE transitions in VolkRegistry; get_volk_status tool + message_volk health warning; PipelineRunner registers volks and records stage heartbeats; 4 new tests added at 2026-07-14 01:18
- SKELETON_FLOW structural escape: task.py at 2026-07-14 01:28
Details:
- STRUCTURAL: 2 escape(s) A.init: method deleted A.m: method deleted
- SKELETON_FLOW structural escape: task.py at 2026-07-14 01:39
Details:
- STRUCTURAL: 2 escape(s) A.init: method deleted A.m: method deleted
- P1 #62 verification: targeted tests pass (61), code-review ERROR-free, test-review clean, pyright clean, ruff clean; full suite has 8 pre-existing/environmental failures unrelated to this task at 2026-07-14 01:43
- SKELETON_FLOW structural escape: task.py at 2026-07-14 01:44
Details:
- STRUCTURAL: 2 escape(s) A.init: method deleted A.m: method deleted
- P1 #63 verified: context injection (SPEC-009 + memory/KG retrieval) is wired into PipelineRunner via inject_for_subject; ContextInjector selector/assembler tests pass (60) at 2026-07-14 01:46
- P1 #65/#79: KG schema SPEC-008 remediation low-risk batch — added NodeType.TASK, TaskNode dataclass, re-export, and tests at 2026-07-14 01:53
- P1 spec-gap remediation: documented deliberate divergences in SPEC-028 FR-009 (profile-based config replaces env overrides) and SPEC-008 FR-006/007 (stdlib ast + regex replace tree-sitter); updated spec-gap-register.md at 2026-07-14 01:58
- BLOCKED: P1 spec-gap remediation remaining items are design forks — goal-system consolidation (which controller is canonical?), memory lifecycle+DI (persistent engine + EventBus), PM budget half (pipeline integration), gateway health/plugin CLI (new surfaces). Recording deliberate divergences as resolved. Proceeding with investigation of goal-system consolidation to produce a decision-ready plan. at 2026-07-14 02:01
- P1 next-wave selection: user chose 2 (AST/context-injection analysis + improvements), 3 (codegen templates), 1 (coverage back-fill) in that order. Starting AST/context investigation. at 2026-07-14 05:08
- P1 context-injection wave: AST provider hardening, usage telemetry, memory recall token cap at 2026-07-14 05:27
Details:
- Added module-level AST toolkit cache, public API signatures, tool_path test seam, direct ast_context tests. Added per-layer token spend logging and 50% budget alerts in context_assembler. Added max_tokens parameter to recall/recall_sync with token-counter truncation; assembler now passes recall budget derived from ContextBudget.
- P1 codegen: spec-driven gen-enum with JSON catalog and drift gate at 2026-07-14 05:40
Details:
- Extended serialize_codebase_ast.py generate_enum to support explicit values, custom docstrings, and stacked @traces specs. Added generate_enum_from_spec, _load_enum_spec, and check_enum_drift. Added --spec-file and --check to gen-enum CLI. Created specs/codegen/enums.json with ChangeType, SyncStatus, NodeType specs. Added 6 new tests for spec-driven generation and drift detection.
- P1 coverage wave 6: back-fill tests for kernel/pam/types, class_extractor, function_extractor, versioning at 2026-07-14 05:53
Details:
- Created tests/kernel/pam/test_types.py covering enums and dataclasses (100%). Extended class_extractor tests to cover Call/Attribute decorators (90%). Extended function_extractor tests for Call/Attribute decorators (93%). Extended versioning tests for missing-version and removed-key branches (100%).
- SKELETON_FLOW structural escape: task.py at 2026-07-14 05:57
Details:
- STRUCTURAL: 2 escape(s) A.init: method deleted A.m: method deleted
- P1 docs update: refreshed context-injection.md artifact digest description and tracked-plan statuses for telemetry + artifact store at 2026-07-14 06:17
- P1 context trimming: boundary-aware layer truncation in assembler with paragraph/sentence/word/byte fallback at 2026-07-14 06:36
- P1 Prolog relevance: wire KgRelevanceRetriever into PipelineKGMixin when Prolog + Neo4j are healthy at 2026-07-14 06:47
- P2 project-scoped context: KG-first project resolver, project_id threading through semantic/AST context, pipeline wiring at 2026-07-14 07:14
Details:
- Added project_resolver.py with resolve_project_id (KG Project-node lookup + basename fallback). Threaded project_id into ContextInjector semantic-layer queries, assembler AST context, and pipeline_kg init/decisions. Added observed tests. Fixed ContextInjector init annotation for PEP 649 inspect.signature compatibility.
- P2 semantic graph bridge: ast-to-kg subcommand + KGCodeContext signal queries at 2026-07-14 07:35
Details:
- Added serialize_codebase_ast.py ast-to-kg subcommand writing complexity, branch_count, and CALLS edges to existing Function nodes. Added KGCodeContext.get_complexity_hotspots and get_call_graph_neighborhood. Added observed tests. Updated context-injection plans.
- P2 incremental KG sync: persisted hash state for FileSynchronizer at 2026-07-14 07:42
Details:
- Added _load_state/_save_state to FileSynchronizer persisting per-file hashes to .orchestrata/kg_sync_state.json. ensure_fresh and sync_project load state at start and save at end so incremental sync survives restarts. Added observed tests for persistence, resync-after-change, state file creation, and clear behavior.
- Committed: P2 incremental KG sync: persist FileSynchronizer hash state at 2026-07-14 07:45
- Committed: P2 semantic graph bridge: ast-to-kg writes complexity/calls to KG at 2026-07-14 07:45
- Committed: P2 project-scoped context: KG-first resolver and project_id threading at 2026-07-14 07:45
- Committed: P1 Prolog relevance: wire KgRelevanceRetriever into PipelineKGMixin by default at 2026-07-14 07:45
- Committed: P1 context trimming: boundary-aware layer truncation in assembler at 2026-07-14 07:45
- SKELETON_FLOW structural escape: task.py at 2026-07-14 07:46
Details:
- STRUCTURAL: 2 escape(s) A.init: method deleted A.m: method deleted
Artifacts
- src/orchestrata_ultimate/kernel/volk_registry.py (10 lines) - Heartbeat-driven ACTIVE/INACTIVE status transitions- src/orchestrata_ultimate/orchestrator/intent_router.py (25 lines) - Health-aware routing with healthy/unhealthy-fallback notes- src/orchestrata_ultimate/agents/tool_registry.py (60 lines) - get_volk_status tool + message_volk health warning- src/orchestrata_ultimate/orchestrator/pipeline_runner.py (25 lines) - PipelineRunner registers volks and records stage heartbeats- docs/volks-and-communication.md (15 lines) - Documented heartbeat-aware orchestrator/volk wiring- src/orchestrata_ultimate/orchestrator/pipeline_runner.py (10 lines) - Context injection wired at stage dispatch boundary- src/orchestrata_ultimate/knowledge_graph/types_enums.py - Added NodeType.TASK enum value- src/orchestrata_ultimate/knowledge_graph/types_nodes.py - Added TaskNode dataclass with to_dict and traces- src/orchestrata_ultimate/knowledge_graph/types.py - Re-exported TaskNode and added to all- tests/knowledge_graph/test_types_enums.py - Added NodeType.TASK assertion- tests/knowledge_graph/test_types_nodes.py - Added TaskNode default and to_dict tests- specs/028-llm-client/spec.md - Added deliberate divergence note: profile-based config replaces ORCHESTRATA_LLM_* env overrides- specs/008-knowledge-graph/spec.md - Added implementation note: stdlib ast + regex parsers replace tree-sitter- docs/spec-gap-register.md - Marked SPEC-028 and SPEC-008 divergences resolved- plans/spec-023-goal-consolidation-plan.md - Decision-ready consolidation plan for SPEC-023 goal system- docs/spec-gap-register.md - Updated with blocker note and link to goal-consolidation plan- src/orchestrata_ultimate/knowledge_graph/context_providers/ast_context.py - AST context provider: toolkit cache, public API signatures, test seam- src/orchestrata_ultimate/knowledge_graph/context_assembler.py - Context assembler: per-layer token usage telemetry- src/orchestrata_ultimate/memory/memory_context.py - Memory recall: max_tokens cap and token-counter truncation- tests/knowledge_graph/context_providers/test_ast_context.py - Direct unit tests for AST context provider- plans/context-injection-ast-analysis.md - Analysis and plan for AST/graph/context injection improvements- scripts/serialize_codebase_ast.py - Extended gen-enum with JSON spec support and --check drift gate- specs/codegen/enums.json - JSON spec catalog for deterministic enum generation- tests/scripts/test_ast_gen_enum.py - Extended tests for spec-driven gen-enum and drift gate- tests/kernel/pam/test_types.py - New test coverage for kernel/pam/types.py enums and dataclasses- tests/knowledge_graph/test_class_extractor.py - Extended class_extractor tests for decorator edge cases- tests/knowledge_graph/test_function_extractor.py - Extended function_extractor tests for decorator edge cases- tests/knowledge_graph/test_versioning.py - Extended versioning tests for missing version and removed-key diff branches- tests/kernel/pam/test_types.py (172 lines) - New coverage for kernel.pam.types: enums and dataclass defaults- tests/knowledge_graph/test_class_extractor.py (279 lines) - Extended class_extractor coverage: Call/Attribute decorator edge cases- tests/knowledge_graph/test_function_extractor.py (112 lines) - Extended function_extractor coverage: Call/Attribute decorator edge cases- tests/knowledge_graph/test_versioning.py (121 lines) - Extended versioning coverage: missing-version and removed-key diff branches- src/orchestrata_ultimate/orchestrator/artifact_store.py (358 lines) - Refactored ArtifactStore: JSONL persistence, spec/reqs fields, ranked digest, add_content helper- src/orchestrata_ultimate/knowledge_graph/context_assembler.py (260 lines) - Prefer store-ranked artifact digest with subject query; fallback to generic provider- tests/orchestrator/test_artifact_store.py (360 lines) - Extended artifact_store tests: persistence, ranking, trace queries, round-trip- tests/knowledge_graph/test_context_assembler.py (300 lines) - Added assembler tests for store-ranked digest and fallback path- docs/context-injection.md (105 lines) - Updated artifact digest description to ranked store-first rendering- plans/context-injection-tracked-plan.md (71 lines) - Marked context-usage telemetry done and artifact-store canonicalization in-progress- src/orchestrata_ultimate/knowledge_graph/context_providers/trimming.py (122 lines) - Boundary-aware context trimming: paragraph/sentence/word/byte budget enforcement- tests/knowledge_graph/context_providers/test_trimming.py (100 lines) - Tests for boundary-aware trimming at all fallback levels- docs/context-injection.md (110 lines) - Documented trimming provider in context assembly stack- plans/context-injection-tracked-plan.md (73 lines) - Marked adaptive layer trimming complete- src/orchestrata_ultimate/kernel/pipeline_kg.py (663 lines) - Wires KgRelevanceRetriever into ContextInjector when Prolog and Neo4j are available- plans/context-injection-tracked-plan.md (73 lines) - Marked Prolog relevance refinement by default as done- src/orchestrata_ultimate/knowledge_graph/project_resolver.py (113 lines) - KG-first project-id resolver with basename fallback- src/orchestrata_ultimate/kernel/pipeline_kg.py (666 lines) - Wired resolve_project_id and _project_id field into pipeline KG mixin- src/orchestrata_ultimate/knowledge_graph/context_injector.py (1060 lines) - Project-scoped semantic-layer requirement/decision queries; quoted ContextPackCache annotation fix- src/orchestrata_ultimate/knowledge_graph/context_assembler.py (281 lines) - Passes project_id into AST context provider- src/orchestrata_ultimate/knowledge_graph/context_providers/ast_context.py (209 lines) - Accepts project_id and renders it in AST context header- tests/knowledge_graph/test_project_resolver.py (119 lines) - Observed tests for project resolver- tests/knowledge_graph/test_context_injector_coverage.py (470 lines) - Added project-scoped semantic layer test- plans/context-injection-tracked-plan.md (74 lines) - Marked 2.9 project-scoped context done- plans/context-injection-improvement-plan.md (149 lines) - Marked Phase 2 item 9 done with file list- scripts/serialize_codebase_ast.py (10950 lines) - Added ast-to-kg subcommand and ast_to_kg function- src/orchestrata_ultimate/knowledge_graph/kg_context.py (830 lines) - Added get_complexity_hotspots and get_call_graph_neighborhood- tests/knowledge_graph/test_ast_to_kg.py (180 lines) - Observed tests for ast-to-kg and KGCodeContext signal queries- plans/context-injection-improvement-plan.md (149 lines) - Marked Phase 1 item 5 done- plans/context-injection-tracked-plan.md (75 lines) - Added 1.7 AST-to-KG bridge done- src/orchestrata_ultimate/knowledge_graph/synchronizer.py (880 lines) - Added persistent hash state load/save to FileSynchronizer- tests/knowledge_graph/test_knowledge_sync.py (295 lines) - Added persistent sync state tests- plans/context-injection-improvement-plan.md (149 lines) - Marked Phase 2 item 10 done- plans/context-injection-tracked-plan.md (75 lines) - Marked 4.2 incremental KG sync done- context.json (4465 lines) - Git status: M- context.md (769 lines) - Git status: M
Decisions
- Best-effort health-aware routing: prefer healthy volks, fall back to unhealthy rather than fail intent: Keeps existing tests green while giving orchestrator real liveness signal; strict health-only would break tests that register volks without dispatching heartbeats at 2026-07-14 01:43
- Cap memory recall via max_tokens passed through recall_sync, using WordTokenCounter truncation: Keeps the memory layer within its ContextBudget reservation without changing the assemble() contract; token counting is already available in memory.token_counter and is consistent with assembler accounting. at 2026-07-14 05:27
- Land spec-driven gen-enum inside serialize_codebase_ast.py rather than a new script: Keeps the generator with existing codegen subcommands, reuses the real generate_enum implementation, and makes the drift gate a natural extension of the CLI. at 2026-07-14 05:40
- Back-fill wave 6 coverage by extending existing test files rather than creating new _extended files: The existing test files were already close to 90%; adding targeted edge-case tests was faster and keeps the test suite compact. kernel/pam/types.py had no tests, so a new file was necessary. at 2026-07-14 05:54
Upcoming
- Awaiting next user directive; P1/P2 context-injection wave complete
Record 2 — 2026-07-14 00:55 · Claude Opus 4.8 · archive (context.history.md)
Purpose
P1 #62: volk↔volk messaging + orchestrator↔volk heartbeat awareness
Work log
- P1 #62 investigation: message_volk tool routes real CXP packets; VolkRegistry has heartbeat/health/in-flight machinery; IntentDispatcher records dispatch-time heartbeat; IntentRouter does NOT filter by health status; no orchestrator health monitor or peer-status exposure to volks
- P1 #62 implementation: health-aware IntentRouter; heartbeat-driven ACTIVE/INACTIVE transitions in VolkRegistry; get_volk_status tool + message_volk health warning; PipelineRunner registers volks and records stage heartbeats; 4 new tests added
- SKELETON_FLOW structural escape: task.py
- STRUCTURAL: 2 escape(s) A.init: method deleted A.m: method deleted
- SKELETON_FLOW structural escape: task.py
- STRUCTURAL: 2 escape(s) A.init: method deleted A.m: method deleted
- P1 #62 verification: targeted tests pass (61), code-review ERROR-free, test-review clean, pyright clean, ruff clean; full suite has 8 pre-existing/environmental failures unrelated to this task
- SKELETON_FLOW structural escape: task.py
- STRUCTURAL: 2 escape(s) A.init: method deleted A.m: method deleted
- P1 #63 verified: context injection (SPEC-009 + memory/KG retrieval) is wired into PipelineRunner via inject_for_subject; ContextInjector selector/assembler tests pass (60)
- P1 #65/#79: KG schema SPEC-008 remediation low-risk batch — added NodeType.TASK, TaskNode dataclass, re-export, and tests
- P1 spec-gap remediation: documented deliberate divergences in SPEC-028 FR-009 (profile-based config replaces env overrides) and SPEC-008 FR-006/007 (stdlib ast + regex replace tree-sitter); updated spec-gap-register.md
- BLOCKED: P1 spec-gap remediation remaining items are design forks — goal-system consolidation (which controller is canonical?), memory lifecycle+DI (persistent engine + EventBus), PM budget half (pipeline integration), gateway health/plugin CLI (new surfaces). Recording deliberate divergences as resolved. Proceeding with investigation of goal-system consolidation to produce a decision-ready plan.
- P1 next-wave selection: user chose 2 (AST/context-injection analysis + improvements), 3 (codegen templates), 1 (coverage back-fill) in that order. Starting AST/context investigation.
- P1 context-injection wave: AST provider hardening, usage telemetry, memory recall token cap
- Added module-level AST toolkit cache, public API signatures, tool_path test seam, direct ast_context tests. Added per-layer token spend logging and 50% budget alerts in context_assembler. Added max_tokens parameter to recall/recall_sync with token-counter truncation; assembler now passes recall budget derived from ContextBudget.
- P1 codegen: spec-driven gen-enum with JSON catalog and drift gate
- Extended serialize_codebase_ast.py generate_enum to support explicit values, custom docstrings, and stacked @traces specs. Added generate_enum_from_spec, _load_enum_spec, and check_enum_drift. Added --spec-file and --check to gen-enum CLI. Created specs/codegen/enums.json with ChangeType, SyncStatus, NodeType specs. Added 6 new tests for spec-driven generation and drift detection.
- P1 coverage wave 6: back-fill tests for kernel/pam/types, class_extractor, function_extractor, versioning
- Created tests/kernel/pam/test_types.py covering enums and dataclasses (100%). Extended class_extractor tests to cover Call/Attribute decorators (90%). Extended function_extractor tests for Call/Attribute decorators (93%). Extended versioning tests for missing-version and removed-key branches (100%).
- SKELETON_FLOW structural escape: task.py
- STRUCTURAL: 2 escape(s) A.init: method deleted A.m: method deleted
- P1 docs update: refreshed context-injection.md artifact digest description and tracked-plan statuses for telemetry + artifact store
- P1 context trimming: boundary-aware layer truncation in assembler with paragraph/sentence/word/byte fallback
- P1 Prolog relevance: wire KgRelevanceRetriever into PipelineKGMixin when Prolog + Neo4j are healthy
- P2 project-scoped context: KG-first project resolver, project_id threading through semantic/AST context, pipeline wiring
- Added project_resolver.py with resolve_project_id (KG Project-node lookup + basename fallback). Threaded project_id into ContextInjector semantic-layer queries, assembler AST context, and pipeline_kg init/decisions. Added observed tests. Fixed ContextInjector init annotation for PEP 649 inspect.signature compatibility.
- P2 semantic graph bridge: ast-to-kg subcommand + KGCodeContext signal queries
- Added serialize_codebase_ast.py ast-to-kg subcommand writing complexity, branch_count, and CALLS edges to existing Function nodes. Added KGCodeContext.get_complexity_hotspots and get_call_graph_neighborhood. Added observed tests. Updated context-injection plans.
- P2 incremental KG sync: persisted hash state for FileSynchronizer
- Added _load_state/_save_state to FileSynchronizer persisting per-file hashes to .orchestrata/kg_sync_state.json. ensure_fresh and sync_project load state at start and save at end so incremental sync survives restarts. Added observed tests for persistence, resync-after-change, state file creation, and clear behavior.
- Committed: P2 incremental KG sync: persist FileSynchronizer hash state
- Committed: P2 semantic graph bridge: ast-to-kg writes complexity/calls to KG
- Committed: P2 project-scoped context: KG-first resolver and project_id threading
- Committed: P1 Prolog relevance: wire KgRelevanceRetriever into PipelineKGMixin by default
- Committed: P1 context trimming: boundary-aware layer truncation in assembler
- SKELETON_FLOW structural escape: task.py
- STRUCTURAL: 2 escape(s) A.init: method deleted A.m: method deleted
Artifacts
- src/orchestrata_ultimate/kernel/volk_registry.py (10 lines) - Heartbeat-driven ACTIVE/INACTIVE status transitions
- src/orchestrata_ultimate/orchestrator/intent_router.py (25 lines) - Health-aware routing with healthy/unhealthy-fallback notes
- src/orchestrata_ultimate/agents/tool_registry.py (60 lines) - get_volk_status tool + message_volk health warning
- src/orchestrata_ultimate/orchestrator/pipeline_runner.py (25 lines) - PipelineRunner registers volks and records stage heartbeats
- docs/volks-and-communication.md (15 lines) - Documented heartbeat-aware orchestrator/volk wiring
- src/orchestrata_ultimate/orchestrator/pipeline_runner.py (10 lines) - Context injection wired at stage dispatch boundary
- src/orchestrata_ultimate/knowledge_graph/types_enums.py - Added NodeType.TASK enum value
- src/orchestrata_ultimate/knowledge_graph/types_nodes.py - Added TaskNode dataclass with to_dict and traces
- src/orchestrata_ultimate/knowledge_graph/types.py - Re-exported TaskNode and added to all
- tests/knowledge_graph/test_types_enums.py - Added NodeType.TASK assertion
- tests/knowledge_graph/test_types_nodes.py - Added TaskNode default and to_dict tests
- specs/028-llm-client/spec.md - Added deliberate divergence note: profile-based config replaces ORCHESTRATA_LLM_* env overrides
- specs/008-knowledge-graph/spec.md - Added implementation note: stdlib ast + regex parsers replace tree-sitter
- docs/spec-gap-register.md - Marked SPEC-028 and SPEC-008 divergences resolved
- plans/spec-023-goal-consolidation-plan.md - Decision-ready consolidation plan for SPEC-023 goal system
- docs/spec-gap-register.md - Updated with blocker note and link to goal-consolidation plan
- src/orchestrata_ultimate/knowledge_graph/context_providers/ast_context.py - AST context provider: toolkit cache, public API signatures, test seam
- src/orchestrata_ultimate/knowledge_graph/context_assembler.py - Context assembler: per-layer token usage telemetry
- src/orchestrata_ultimate/memory/memory_context.py - Memory recall: max_tokens cap and token-counter truncation
- tests/knowledge_graph/context_providers/test_ast_context.py - Direct unit tests for AST context provider
- plans/context-injection-ast-analysis.md - Analysis and plan for AST/graph/context injection improvements
- scripts/serialize_codebase_ast.py - Extended gen-enum with JSON spec support and --check drift gate
- specs/codegen/enums.json - JSON spec catalog for deterministic enum generation
- tests/scripts/test_ast_gen_enum.py - Extended tests for spec-driven gen-enum and drift gate
- tests/kernel/pam/test_types.py - New test coverage for kernel/pam/types.py enums and dataclasses
- tests/knowledge_graph/test_class_extractor.py - Extended class_extractor tests for decorator edge cases
- tests/knowledge_graph/test_function_extractor.py - Extended function_extractor tests for decorator edge cases
- tests/knowledge_graph/test_versioning.py - Extended versioning tests for missing version and removed-key diff branches
- tests/kernel/pam/test_types.py (172 lines) - New coverage for kernel.pam.types: enums and dataclass defaults
- tests/knowledge_graph/test_class_extractor.py (279 lines) - Extended class_extractor coverage: Call/Attribute decorator edge cases
- tests/knowledge_graph/test_function_extractor.py (112 lines) - Extended function_extractor coverage: Call/Attribute decorator edge cases
- tests/knowledge_graph/test_versioning.py (121 lines) - Extended versioning coverage: missing-version and removed-key diff branches
- src/orchestrata_ultimate/orchestrator/artifact_store.py (358 lines) - Refactored ArtifactStore: JSONL persistence, spec/reqs fields, ranked digest, add_content helper
- src/orchestrata_ultimate/knowledge_graph/context_assembler.py (260 lines) - Prefer store-ranked artifact digest with subject query; fallback to generic provider
- tests/orchestrator/test_artifact_store.py (360 lines) - Extended artifact_store tests: persistence, ranking, trace queries, round-trip
- tests/knowledge_graph/test_context_assembler.py (300 lines) - Added assembler tests for store-ranked digest and fallback path
- docs/context-injection.md (105 lines) - Updated artifact digest description to ranked store-first rendering
- plans/context-injection-tracked-plan.md (71 lines) - Marked context-usage telemetry done and artifact-store canonicalization in-progress
- src/orchestrata_ultimate/knowledge_graph/context_providers/trimming.py (122 lines) - Boundary-aware context trimming: paragraph/sentence/word/byte budget enforcement
- tests/knowledge_graph/context_providers/test_trimming.py (100 lines) - Tests for boundary-aware trimming at all fallback levels
- docs/context-injection.md (110 lines) - Documented trimming provider in context assembly stack
- plans/context-injection-tracked-plan.md (73 lines) - Marked adaptive layer trimming complete
- src/orchestrata_ultimate/kernel/pipeline_kg.py (663 lines) - Wires KgRelevanceRetriever into ContextInjector when Prolog and Neo4j are available
- plans/context-injection-tracked-plan.md (73 lines) - Marked Prolog relevance refinement by default as done
- src/orchestrata_ultimate/knowledge_graph/project_resolver.py (113 lines) - KG-first project-id resolver with basename fallback
- src/orchestrata_ultimate/kernel/pipeline_kg.py (666 lines) - Wired resolve_project_id and _project_id field into pipeline KG mixin
- src/orchestrata_ultimate/knowledge_graph/context_injector.py (1060 lines) - Project-scoped semantic-layer requirement/decision queries; quoted ContextPackCache annotation fix
- src/orchestrata_ultimate/knowledge_graph/context_assembler.py (281 lines) - Passes project_id into AST context provider
- src/orchestrata_ultimate/knowledge_graph/context_providers/ast_context.py (209 lines) - Accepts project_id and renders it in AST context header
- tests/knowledge_graph/test_project_resolver.py (119 lines) - Observed tests for project resolver
- tests/knowledge_graph/test_context_injector_coverage.py (470 lines) - Added project-scoped semantic layer test
- plans/context-injection-tracked-plan.md (74 lines) - Marked 2.9 project-scoped context done
- plans/context-injection-improvement-plan.md (149 lines) - Marked Phase 2 item 9 done with file list
- scripts/serialize_codebase_ast.py (10950 lines) - Added ast-to-kg subcommand and ast_to_kg function
- src/orchestrata_ultimate/knowledge_graph/kg_context.py (830 lines) - Added get_complexity_hotspots and get_call_graph_neighborhood
- tests/knowledge_graph/test_ast_to_kg.py (180 lines) - Observed tests for ast-to-kg and KGCodeContext signal queries
- plans/context-injection-improvement-plan.md (149 lines) - Marked Phase 1 item 5 done
- plans/context-injection-tracked-plan.md (75 lines) - Added 1.7 AST-to-KG bridge done
- src/orchestrata_ultimate/knowledge_graph/synchronizer.py (880 lines) - Added persistent hash state load/save to FileSynchronizer
- tests/knowledge_graph/test_knowledge_sync.py (295 lines) - Added persistent sync state tests
- plans/context-injection-improvement-plan.md (149 lines) - Marked Phase 2 item 10 done
- plans/context-injection-tracked-plan.md (75 lines) - Marked 4.2 incremental KG sync done
- context.json (4465 lines) - Git status: M
- context.md (769 lines) - Git status: M
Decisions
- Best-effort health-aware routing: prefer healthy volks, fall back to unhealthy rather than fail intent: Keeps existing tests green while giving orchestrator real liveness signal; strict health-only would break tests that register volks without dispatching heartbeats
- Cap memory recall via max_tokens passed through recall_sync, using WordTokenCounter truncation: Keeps the memory layer within its ContextBudget reservation without changing the assemble() contract; token counting is already available in memory.token_counter and is consistent with assembler accounting.
- Land spec-driven gen-enum inside serialize_codebase_ast.py rather than a new script: Keeps the generator with existing codegen subcommands, reuses the real generate_enum implementation, and makes the drift gate a natural extension of the CLI.
- Back-fill wave 6 coverage by extending existing test files rather than creating new _extended files: The existing test files were already close to 90%; adding targeted edge-case tests was faster and keeps the test suite compact. kernel/pam/types.py had no tests, so a new file was necessary.
Upcoming
- Awaiting next user directive; P1/P2 context-injection wave complete