|
|
@@ -0,0 +1,46 @@
|
|
|
+# Todo 47.2 Plugin Token and Compatibility Boundaries Plan
|
|
|
+
|
|
|
+**Status:** in_progress
|
|
|
+
|
|
|
+## Goal
|
|
|
+
|
|
|
+Close the remaining quality-gate findings without expanding plugin behavior or generic orchestration scope.
|
|
|
+
|
|
|
+## Scope
|
|
|
+
|
|
|
+- Reject `不静音`, `不用静音`, `无需静音`, `no mute`, and equivalent negations as substantive invalid input with no LLM fallback or port call.
|
|
|
+- Reject decimal/grouped numeric phrases such as `40.5`, `10.5`, and `1,000` without truncating them into valid integers.
|
|
|
+- Canonicalize JSON Schema integral floats (`2.0`, `40.0`) to Python `int` for volume, search, and schedule numeric fields before ports/cache keys.
|
|
|
+- Preserve `used_fallback=True` when a post-fallback normalizer fails.
|
|
|
+- Use the standard `jsonschema` RFC3339 `date-time` checker; keep only the custom `iana-timezone` checker.
|
|
|
+- Move newly added dataclass fields to the end so existing positional `EventDefinition` and `ToolDefinition` construction keeps its historical meaning.
|
|
|
+
|
|
|
+## Files
|
|
|
+
|
|
|
+- Modify: `src/agent_lab/application/events/models.py`
|
|
|
+- Modify: `src/agent_lab/application/events/kernel.py`
|
|
|
+- Modify: `src/agent_lab/application/events/registry.py`
|
|
|
+- Modify: `src/agent_lab/application/events/builtin_plugins.py`
|
|
|
+- Modify: `src/agent_lab/application/tools.py`
|
|
|
+- Modify: `tests/test_event_kernel.py`
|
|
|
+- Modify: `tests/test_builtin_event_plugins.py`
|
|
|
+
|
|
|
+## Requirement Execution Loop
|
|
|
+
|
|
|
+### Plan
|
|
|
+
|
|
|
+1. Add RED tests for all named negation and malformed numeric phrases; assert zero fallback and zero port calls.
|
|
|
+2. Add RED canonical-number tests proving ports/cache treat integral floats as integers and equivalent values share cache keys.
|
|
|
+3. Add RED post-fallback normalizer failure and positional-constructor compatibility tests.
|
|
|
+4. Add RED lowercase `t`/`z` RFC3339 acceptance while retaining invalid-calendar rejection.
|
|
|
+5. Implement the smallest parser/normalizer/kernel/dataclass changes and run final bounded reviews.
|
|
|
+
|
|
|
+### Observe / Update
|
|
|
+
|
|
|
+Close Todo 47 only when no Critical/Important findings remain and all external side effects are protected by canonical validated arguments.
|
|
|
+
|
|
|
+## Verification
|
|
|
+
|
|
|
+- `UV_CACHE_DIR=.uv-cache uv run pytest tests/test_event_kernel.py tests/test_builtin_event_plugins.py -q`
|
|
|
+- `UV_CACHE_DIR=.uv-cache uv run pytest`
|
|
|
+- `git diff --check`
|