Skip to content

Demo Behavior Tree Integration with API v2#293

Merged
ahouseholder merged 41 commits intomainfrom
api-bt-integration
Feb 19, 2026
Merged

Demo Behavior Tree Integration with API v2#293
ahouseholder merged 41 commits intomainfrom
api-bt-integration

Conversation

@ahouseholder
Copy link
Copy Markdown
Contributor

@ahouseholder ahouseholder commented Feb 19, 2026

This PR leverages the older custom Behavior Tree implementation in the Vultron simulator to integrate a completely new reimplementation of the Behavior Tree structure into the receive-report-demo. The backend semantic message dispatcher now uses a behavior tree implementation using py_trees to complete the "validate report" step. This is significant in that it's the first instance of the ActivityPub based front-end connecting up with a Behavior Tree based backend. This has been a longstanding architectural goal of the project.

Copilot summary

This pull request introduces and documents the integration of the py_trees library for handler-level behavior tree (BT) execution in the Vultron API v2, marking the completion of Phase BT-1. The changes update the implementation plan and documentation to reflect BT integration as the top priority, summarize the completed BT infrastructure, and add a new architectural decision record (ADR) justifying the use of py_trees. Additionally, minor improvements are made to Docker configuration and health checks.

Behavior Tree (BT) Integration and Documentation:

  • Added ADR-0008 (docs/adr/0008-use-py-trees-for-handler-bt-integration.md) documenting the decision to use py_trees for handler-level BT execution, including context, decision drivers, alternatives, consequences, and validation results.
  • Updated ADR index (docs/adr/index.md) to include ADR-0007 (behavior dispatcher) and ADR-0008 (py_trees integration).
  • Updated implementation plan (plan/IMPLEMENTATION_PLAN.md) to make BT integration the top priority, summarize BT infrastructure completion, and reflect the current status of handler refactoring and tests. [1] [2] [3]

Cleanup and Status Tracking:

  • Removed resolved bug documentation and implementation notes related to previous Docker Compose and health check issues from plan/BUGS.md and plan/IMPLEMENTATION_NOTES.md, as these issues are now fully addressed and documented elsewhere. [1] [2]

Docker Configuration Improvements:

  • Set LOG_LEVEL=DEBUG in the api-dev Docker build stage for easier debugging during development.
  • Updated the Docker Compose health check for the api-dev service to use the /api/v2/health/live endpoint, improving reliability and accuracy of service readiness checks.

ahouseholder and others added 30 commits February 18, 2026 12:04
…ration plan

- Added last updated date for better tracking
- Updated related ADR references for clarity
- Improved executive summary and key challenge descriptions for better understanding
- Enhanced key components section with clearer formatting
- Added current implementation status to provide an overview of progress
- Expanded primary objectives and non-goals for comprehensive project scope
- Included critical design points and implementation strategies for clarity
- Documented open questions and design decisions for future reference
Updates based on comprehensive review of specs/ and implementation status:

Handler Status Corrections:
- Correct handler count: 36 total (not 47)
- 6 report handlers complete with business logic (17%)
- 1 UNKNOWN handler (WARNING level logging)
- 29 handlers remain as stubs
- Updated test count to 378 (from implementation notes)

New Architecture Lessons:
- Docker health check coordination and service dependencies
- FastAPI response_model serialization issue (HP-07-001)
- Environment variable consistency in docker-compose
- Image rebuilds after Dockerfile changes

Common Pitfalls:
- Added Docker health check coordination section
- Documented retry logic patterns for service startup
- Expanded on container health checks vs readiness

Infrastructure Updates:
- Added Docker infrastructure to completed features
- Clarified MessageSemantics enum count
- Updated timestamp to 2026-02-18

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…e redundancies

- Add behavior-tree-integration.md: BT execution model, bridge layer, DataLayer integration
- Add idempotency.md: Consolidate duplicate detection requirements from 4 files
- Add specs/README.md: Documentation of specification structure and reading order
- Refine inbox-endpoint.md: Remove redundant cross-references, point to idempotency.md
- Refine error-handling.md: Move error response format to http-protocol.md
- Refine message-validation.md: Consolidate idempotency requirements
- Refine handler-protocol.md: Simplify idempotency cross-references
- Refine response-format.md: Point to idempotency.md for duplicate response handling
- Update http-protocol.md: Add error response format (HP-06-001), reorganize requirements

Changes align with PRIORITIES.md focus on BT integration prototype and reduce
specification redundancy while maintaining atomic, verifiable requirements.

Total: 1855 lines (+329 from consolidation and new requirements)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Per PRIORITIES.md and PLAN_prompt.md instructions:
- Performed gap analysis comparing specs/behavior-tree-integration.md against vultron/api/v2
- Key finding: BT integration in design phase only; no py_trees implementation exists
- Added Phase BT-1 tasks as top priority (POC with validate_report handler)
- Documented critical gaps: py_trees dependency, BT bridge, workflow trees, CaseActor creation
- Updated IMPLEMENTATION_NOTES.md with detailed findings and implementation strategy

Changes:
- plan/IMPLEMENTATION_PLAN.md: Added Phase BT-1 (6 sub-phases, 25 tasks)
- plan/IMPLEMENTATION_NOTES.md: Gap analysis findings, comparison table, file structure

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Added py-trees>=2.2.0 to pyproject.toml to support behavior tree
integration per specs/behavior-tree-integration.md. This is the
first step in Phase BT-1 of the implementation plan.

Changes:
- Added py-trees>=2.2.0 to dependencies in pyproject.toml
- Ran uv sync to install the package
- Verified import works successfully
- All 378 tests still pass

Next: Create behavior tree directory structure (BT-1.1.2)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Created vultron/behaviors/ with report/ subdirectory
- Created test/behaviors/ with report/ subdirectory
- Added __init__.py files with package documentation
- All 378 tests pass
- Ready for BT bridge layer implementation

Task: BT-1.1.2 from plan/IMPLEMENTATION_PLAN.md
Next: BT-1.1.3 - Implement BT bridge layer

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Created vultron/behaviors/bridge.py with BTBridge class
- Provides handler-to-BT execution interface per specs/behavior-tree-integration.md
- Implements requirements BT-05-001 through BT-05-004:
  * BT execution bridge for handler invocation
  * py_trees context setup with DataLayer access
  * Blackboard population with activity and actor state
  * Single-shot tree execution with result capture
- BTBridge methods:
  * setup_tree(): Configure BehaviourTree with blackboard context
  * execute_tree(): Run BT to completion (max_iterations safety limit)
  * execute_with_setup(): Convenience method combining setup+execution
- BTExecutionResult dataclass returns status, feedback, and errors
- Comprehensive test coverage (16 tests in test/behaviors/test_bridge.py)
- All 394 tests passing, no regressions
- Black formatted

Key implementation decisions:
- Blackboard keys registered with WRITE access for population
- Synchronous execution within handler context (meets BT-04-003)
- Error handling with exception capture and logging
- Actor isolation via separate blackboard clients per actor_id

Next: BT-1.2.1 - Implement DataLayer-aware helper nodes

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Created base classes and common CRUD nodes for behavior tree integration:
- DataLayerCondition/DataLayerAction: Abstract bases for BT nodes
- ReadObject: Read from DataLayer and store in blackboard
- UpdateObject: Apply updates to objects in DataLayer
- CreateObject: Create new objects in DataLayer

Key implementation notes:
- py_trees blackboard keys must be simple (no URL slashes)
- Use simplified keys like 'object_{id}' for URL-based object IDs
- Nodes access DataLayer via blackboard (set by BTBridge)
- Full CRUD workflow support with proper error handling

Tests: 18 new tests, all passing. Total: 412 tests passing.

Implements specs/behavior-tree-integration.md BT-07-001/002/003.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Created comprehensive analysis document in session workspace
- Documented 6-phase procedural flow of current handler
- Identified decision points and condition nodes
- Compared procedural handler against simulation BT structure
- Mapped proposed BT implementation strategy (minimal match + policy evaluation)
- Updated IMPLEMENTATION_NOTES.md with findings and cross-references
- Updated IMPLEMENTATION_PLAN.md to mark BT-1.3.1 complete
- Added markdown linting tip to AGENTS.md

All 412 tests passing. Ready for BT-1.3.2: Implement report validation BT nodes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Created vultron/behaviors/report/nodes.py (724 lines, 10 node classes)
  * Condition nodes: CheckRMStateValid, CheckRMStateReceivedOrInvalid
  * Action nodes: TransitionRMtoValid, TransitionRMtoInvalid, CreateCaseNode,
    CreateCaseActivity, UpdateActorOutbox
  * Policy stubs: EvaluateReportCredibility, EvaluateReportValidity (always SUCCESS)
- Created test/behaviors/report/test_nodes.py (398 lines, 18 comprehensive tests)
  * All node classes tested (SUCCESS/FAILURE paths)
  * Full integration test (9-step validation workflow)
  * Idempotency test (duplicate case creation)
- All nodes inherit from DataLayerCondition/DataLayerAction base classes
- Blackboard key passing: case_id → activity_id → outbox update
- Status updates via set_status(), DataLayer persistence
- Updated IMPLEMENTATION_NOTES.md with implementation details
- Updated IMPLEMENTATION_PLAN.md to mark BT-1.3.2 complete

All 430 tests passing (412 base + 18 new). Ready for BT-1.3.3: Compose validation tree.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Created vultron/behaviors/report/validate_tree.py with factory function
for composing the report validation workflow as a py_trees behavior tree.

Tree structure (Phase 1):
- Root: Selector (early exit OR full validation)
- Early exit: CheckRMStateValid (short-circuit if already valid)
- Validation flow: Sequence of preconditions, policy checks, and actions
  - CheckRMStateReceivedOrInvalid (precondition)
  - EvaluateReportCredibility/Validity (policy stubs)
  - ValidationActions: TransitionRMtoValid, CreateCase, CreateActivity, UpdateOutbox

Key changes:
- Added setup() overrides in CreateCaseActivity and UpdateActorOutbox nodes
  to register blackboard keys (case_id, activity_id) for READ access
- Created comprehensive integration tests (12 tests, 502 lines)
- Updated 2 existing node tests to handle blackboard key registration

All 442 tests passing (430 base + 12 new).

Implements specs/behavior-tree-integration.md BT-06 requirements.
Per plan/IMPLEMENTATION_PLAN.md Phase BT-1.3.3.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Created default policy implementation for Phase 1 BT integration:

- Added vultron/behaviors/report/policy.py:
  - ValidationPolicy abstract base class with is_credible/is_valid interface
  - AlwaysAcceptPolicy implementation (always returns True)
  - INFO-level logging for policy decisions
  - Comprehensive docstrings with extension points

- Added test/behaviors/report/test_policy.py:
  - 12 comprehensive tests covering policy behavior
  - Tests for abstract base class, inheritance, logging, immutability
  - All tests passing (454 total: 442 base + 12 new)

- Updated plan/IMPLEMENTATION_PLAN.md: Marked BT-1.3.4 complete
- Updated plan/IMPLEMENTATION_NOTES.md: Added implementation details and lessons learned

Per specs/behavior-tree-integration.md and plan/BT_INTEGRATION.md.
Black formatting applied.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Updates following LEARN_prompt design review:

AGENTS.md:
- Update last modified date to 2026-02-18
- Add BT Integration Infrastructure section documenting Phase BT-1.1-1.3.4
- Document 5 key insights from py_trees integration (blackboard keys,
  registration, composition, policy pattern, DataLayer injection)
- Update Future Work section to reflect BT infrastructure completion

specs/behavior-tree-integration.md:
- Update status: infrastructure complete (Phase BT-1.1-1.3.4)
- Reduce library lock-in: BT-02-001 now recommends industry-standard library
  (not hardcoded py_trees mandate)
- Add blackboard key restriction to BT-03-003 (no slashes in keys)
- Improve BT-06-003 determinism definition with verification criteria
- Expand BT-07 DataLayer protocol documentation with concrete API details
- Update Implementation section showing completed components (bridge, helpers,
  trees, policy, tests)

specs/handler-protocol.md:
- Add HP-07-002: Handler timeout requirement (30s max)
- Add HP-07-003: Long-running operation guidance (async subtasks)
- Add verification criteria for timeout requirements

specs/http-protocol.md:
- Clarify HP-06-001 timeout measurement point (response headers, not body)
- Add measurement exclusions (network latency, client processing)
- Expand HP-06-003 log format specification

specs/code-style.md:
- Reduce formatter lock-in: CS-01-001 now requires PEP 8 (recommends Black)
- Add CS-01-004/CS-01-005: Docstring standards with Google style guidance
- Add docstring examples showing public API vs. utility function patterns

specs/semantic-extraction.md:
- Add SE-01-003: Rehydration failure handling (log warning, return UNKNOWN)
- Update verification criteria to include rehydration failure tests

specs/testability.md:
- Add TB-06-004: Test cleanup requirement (fixtures must clean up data)
- Add rationale and scope for cleanup requirement

Rationale:
- BT Phase BT-1 infrastructure now complete; documentation reflects reality
- Reduces over-specification (library/tool mandates → capability requirements)
- Improves clarity (timeout measurement, determinism definition)
- Adds missing requirements (handler timeouts, test cleanup, rehydration
  failures)
- Follows meta-specifications.md guidance: atomic, testable, less prescriptive

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Gap analysis summary (2026-02-18):
- Phase BT-1.1 through BT-1.3 complete (infrastructure, nodes, trees)
- 76 BT tests passing, all 454 total tests passing
- Router test infrastructure fixed (18/18 passing)
- Phase BT-1.4 through BT-1.6 remain (handler refactoring, demo, docs)

Updates:
- Marked Phase 0.5 as resolved (router tests fixed)
- Updated BT integration status with completed phases
- Added comprehensive gap analysis with spec compliance status
- Updated test counts (454 passing, 2 xfailed)
- Added Phase BT-1 progress summary to IMPLEMENTATION_NOTES.md
- Identified critical path: complete BT-1.4-1.6 per PRIORITIES.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Complete Phase BT-1.4 (Handler Refactoring):
- Replaced 165 lines of procedural logic with BT invocation
- Handler validates inputs, delegates workflow to BT, handles results
- Uses BTBridge.execute_with_setup() with create_validate_report_tree()
- Preserves @verify_semantics decorator and error handling
- All 454 tests passing (no regressions)
- Demo test and reporting workflow tests passing

Implementation approach:
- Keep rehydration/validation in handler (input validation)
- Delegate orchestration to BT (status, case creation, outbox)
- Clean separation: validate → execute → log results
- No parallel implementation needed

Updates:
- Modified vultron/api/v2/backend/handlers.py:validate_report()
- Updated plan/IMPLEMENTATION_PLAN.md (marked BT-1.4.1, BT-1.4.2 complete)
- Updated plan/IMPLEMENTATION_NOTES.md (added lessons learned)

Next: Phase BT-1.5 (demo verification) and BT-1.6 (documentation)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Enhancements:
- Added tree visualization logging to BTBridge using py_trees.display
- Enhanced handler logging with detailed BT execution results (✓/✗/⚠ symbols)
- Created performance tests (test/behaviors/test_performance.py)
- Updated demo script docstring with BT logging guidance

Results:
- BT execution logging: tree structure at DEBUG, results at INFO
- Performance baseline: P50=0.44ms, P95=0.69ms, P99=0.84ms
- All 456 tests passing (added 2 performance tests)

Documentation:
- Updated plan/IMPLEMENTATION_PLAN.md: marked BT-1.5 complete
- Updated plan/IMPLEMENTATION_NOTES.md: documented enhancements and results

Per BUILD_prompt.md task BT-1.5.1, BT-1.5.2, BT-1.5.3

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Comprehensive design review findings (2026-02-18) including:

### BT Integration Status
- Update Phase BT-1 status to complete (infrastructure + handler refactoring)
- Document handler-calls-BT pattern as validated approach
- Add decision tree for when to use BTs vs procedural code
- Clarify that validate_report refactoring is complete (P99 < 1ms)

### Production Readiness Assessment
- Add explicit production readiness gap analysis
- Categorize gaps by severity (Critical/Important/Nice-to-have)
- Recommend prioritization: idempotency → response generation → observability

### Known Specification Issues
- Document cross-reference errors (EH-05-001 references wrong section)
- Clarify ambiguities (rehydration timing, idempotency strength)
- List incomplete specs (outbox, CaseActor, BT naming conventions)
- Provide workarounds for agents implementing features

### Implementation Prioritization Guidance
- Add scenario-based prioritization (POC vs Production vs Maintenance)
- Decision tree for BT adoption (complexity assessment)
- Agent self-assessment checklist for feature implementation
- Context: Validated prototype with 454 tests, 6/36 handlers complete

### Additional Updates
- Add test suite status section with verification command
- Expand Future Work section with more detail
- Update "Last Updated" timestamp to reflect design review completion

Rationale: Design review revealed critical gaps (idempotency, response
generation) and specification issues that agents need to be aware of.
AGENTS.md now provides clearer guidance on implementation priorities,
BT adoption criteria, and known issues to avoid.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Per user guidance, separate technical reference from implementation history:

### New Structure
- **AGENTS.md** (871 lines, -26%): Quick technical reference only
  - How-tos, gotchas, key file locations
  - Removed: Implementation status, lessons learned, planning
  - Focus: 'How to' not 'what's done' or 'why'

- **plan/IMPLEMENTATION_NOTES.md** (+298 lines): Historical context
  - Design review findings (2026-02-18)
  - Implementation status assessments
  - Known specification issues
  - Architectural lessons learned
  - Implementation prioritization guidance

- **specs/project-documentation.md** (NEW): Documentation structure spec
  - Defines purpose and scope of each documentation file
  - AGENTS.md vs IMPLEMENTATION_NOTES.md vs IMPLEMENTATION_PLAN.md
  - Content migration guidelines
  - File size targets

### Benefits
- Agents can quickly scan AGENTS.md for technical patterns
- Historical context preserved in IMPLEMENTATION_NOTES.md
- Clear documentation structure prevents future drift
- Reduces cognitive load (quick ref vs deep dive)

### Changes Summary
- Moved implementation status from AGENTS.md → IMPLEMENTATION_NOTES.md
- Moved production readiness assessment → IMPLEMENTATION_NOTES.md
- Moved known specification issues → IMPLEMENTATION_NOTES.md
- Moved BT integration lessons → IMPLEMENTATION_NOTES.md
- Moved prioritization guidance → IMPLEMENTATION_NOTES.md
- Kept: Technical gotchas, handler protocol, registry pattern,
  common pitfalls (technical only)

AGENTS.md now adheres to <800 line target (currently 871).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- specs/behavior-tree-integration.md: mark Phase BT-1 COMPLETE; expand
  Implementation section to include handler integration and performance
  results (BT-1.6.1)
- plan/IMPLEMENTATION_NOTES.md: record Phase BT-1.5 and BT-1.6 completion;
  replace outdated 'Next Steps' guidance with completed summary (BT-1.6.2)
- plan/IMPLEMENTATION_PLAN.md: mark BT-1.6.1 and BT-1.6.2 done; update
  Phase BT-1 status to COMPLETE
- docs/adr/0008-use-py-trees-for-handler-bt-integration.md: new ADR
  capturing the decision to use py_trees for handler-level BT execution
- docs/adr/index.md: add ADR-0007 and ADR-0008 to accepted ADR list

All 456 tests pass (2 xfailed, expected).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ealthcheck

The docker-compose healthcheck was polling GET /api/v2/actors/ every 2s,
causing continuous verbose log output even when no external requests were
being made. This is both noisy and indicates the healthcheck was hitting
a heavyweight data endpoint.

Fix:
- Add lightweight /health/live and /health/ready endpoints
  (implements OB-05-001 and OB-05-002 from specs/observability.md)
- Update docker-compose.yml healthcheck to use /api/v2/health/live
- Add 4 tests covering both endpoints

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ahouseholder and others added 5 commits February 19, 2026 11:51
…nd 3

setup_clean_environment resets the TinyDB data layer but did not clear
the in-memory ACTOR_IO_STORE. When demos 2 and 3 called
setup_clean_environment after demo 1, init_actor_io raised KeyError
because the actor IDs from demo 1 were still present in the store.

Fix: call clear_all_actor_ios() in setup_clean_environment before
re-initializing actor I/O, so each demo starts with a fully clean state.

Add regression test test_all_demos_succeed that captures errors logged
by main() and asserts no ERROR SUMMARY is printed, verifying all 3
demos complete successfully.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…TATION_NOTES.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@ahouseholder ahouseholder self-assigned this Feb 19, 2026
Copilot AI review requested due to automatic review settings February 19, 2026 17:23
@ahouseholder ahouseholder added enhancement New feature or request tech/environment Changes to project infrastructure dependencies Pull requests that update a dependency file tech/backend Changes to modules, libraries, etc. research Exploratory work to learn something useful python:uv Pull requests that update python:uv code labels Feb 19, 2026
Comment thread test/behaviors/test_performance.py Fixed
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR successfully integrates behavior trees (BT) using the py_trees library into the Vultron API v2 handler system, marking a significant architectural milestone. The integration refactors the validate_report handler to use BT execution, replacing ~165 lines of procedural logic with ~25 lines of BT invocation while maintaining all existing functionality.

Changes:

  • Complete BT infrastructure implementation (bridge, helpers, nodes, tree composition, policies)
  • Refactored validate_report handler to use BT execution
  • Added 78 comprehensive BT tests with performance baselines (P99 < 1ms)
  • Documented architectural decisions in ADR-0008
  • Updated specifications and implementation plans

Reviewed changes

Copilot reviewed 49 out of 50 changed files in this pull request and generated no comments.

Show a summary per file
File Description
vultron/behaviors/bridge.py New BT bridge layer for handler-to-BT execution with blackboard management
vultron/behaviors/helpers.py DataLayer-aware base node classes (Condition, Action) and common operations
vultron/behaviors/report/nodes.py 10 domain-specific validation nodes (conditions, actions, policy stubs)
vultron/behaviors/report/validate_tree.py Composed validation tree with early exit optimization
vultron/behaviors/report/policy.py ValidationPolicy interface and AlwaysAcceptPolicy default implementation
vultron/api/v2/backend/handlers.py Refactored validate_report handler to delegate to BT execution
vultron/scripts/receive_report_demo.py Enhanced with clean environment setup and BT logging guidance
vultron/api/v2/routers/health.py New health check endpoints (/health/live, /health/ready)
vultron/api/v2/routers/v2_router.py Integrated health router
test/behaviors/* 78 new BT tests covering infrastructure, integration, and performance
test/scripts/test_receive_report_demo.py Added regression test for actor IO cleanup
test/api/v2/routers/test_health.py Tests for health check endpoints
specs/*.md Updated specifications for BT integration, idempotency, HTTP protocol, observability
docs/adr/0008-*.md New ADR documenting py_trees integration decision
plan/*.md Updated implementation plan, notes, and priorities
pyproject.toml, uv.lock Added py-trees>=2.2.0 dependency
docker/, prompts/ Updated Docker health checks and agent prompts

ahouseholder and others added 6 commits February 19, 2026 12:34
…review

- Fix EH-05-001: replace incorrect HP-06-001 cross-reference (timeouts)
  with inline error response format specification and correct HP-03-001 ref
- Fix BT-03-003: document blackboard key naming convention
  ({noun}_{id_segment} pattern, no slashes in keys)
- Clarify HP-07-001/ID-04-004: state-changing handlers MUST be idempotent
  (not just SHOULD) to prevent data corruption in RM/EM/CS state machines
- Add BT Blackboard Key Naming pitfall to AGENTS.md with code examples

Rationale: Issues identified in plan/IMPLEMENTATION_NOTES.md design review
(2026-02-18) under 'Known Specification Issues' and 'Specification Ambiguities'.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- specs/outbox.md: new spec for outbox population and delivery (RF-06-001 gap)
- specs/semantic-extraction.md: fix SEMANTIC_ACTIVITY_PATTERNS →
  SEMANTICS_ACTIVITY_PATTERNS to match code
- specs/message-validation.md: fix MV-02-004 log level ERROR → WARNING
  (validation failures are 4xx client errors per SL-03-001)
- specs/response-format.md: add cross-reference to new outbox.md
- specs/project-documentation.md: remove fragile current-line-count note
- AGENTS.md: add 'When to Use BTs' pitfall section; add BT files to Key
  Files Map; add outbox.md to Specification Usage Guidance
- plan/IMPLEMENTATION_NOTES.md: mark resolved spec maintenance TODOs;
  add two remaining open items (CaseActor spec, async dispatcher spec)
- prompts/LEARN_prompt.md: add note about IMPLEMENTATION_NOTES reset cycle

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Tag production-only requirements across 5 spec files per PROTO-04-001/002:

- http-protocol.md: HP-02-001 (size limits), HP-05-001/02 (correlation ID
  headers), HP-06-003 (timeout warning logging), HP-07-001/02/03 (rate
  limiting headers)
- structured-logging.md: SL-01-001/02/03/04 (structured log format),
  SL-02-001/02 (correlation ID fields), SL-06-001/02/03/04 (authorization
  logging, auth deferred per PROTO-01-001), SL-07-001/02/03 (data access
  audit logging), SL-08-001 (performance metrics)
- handler-protocol.md: HP-07-002/03 (execution timeout enforcement)
- outbox.md: OX-05-001/02 (federation delivery, deferred per PROTO-02-001)
- behavior-tree-integration.md: BT-10-004 (CaseActor authorization, auth
  deferred per PROTO-01-001), BT-11-003 (resource-level locking)

Also update specs/README.md to document the PROD_ONLY tag convention,
including format, meaning, and common categories.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…g sanitization

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
@ahouseholder ahouseholder added this to the 2026-03 milestone Feb 19, 2026
@ahouseholder ahouseholder merged commit 7a9b454 into main Feb 19, 2026
6 checks passed
@ahouseholder ahouseholder deleted the api-bt-integration branch February 19, 2026 18:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file enhancement New feature or request python:uv Pull requests that update python:uv code research Exploratory work to learn something useful tech/backend Changes to modules, libraries, etc. tech/environment Changes to project infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Spawn Case Actor from Report Demo Report Vulnerability Workflow Demo

3 participants