[Feat]: Add a task-state-invariants agent skill for sibling-surface propagation
Maintainer thường phản hồi trong vòng 2 ngày
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Is your feature request related to a problem? Please describe
The agent rule layer in this repo is good at three things: code style
(docs/ai/coding_conventions.md), the pre-done gate
(docs/ai/mandatory_checks.md), and post-mortem capture
(.agents/skills/mistake-reflection). What none of them state is which
surfaces a task-state write has to reach. That gap keeps producing the same
class of defect: a value that is correct on one surface and missing or stale
on another.
Recent instances, all in this class:
- #1276 (closed):
status.timestampwas mapped by
src/a2a/compat/v0_3/conversions.py(JSON-RPC/REST compat) but not by
src/a2a/compat/v0_3/proto_utils.py(gRPC compat) — the same field appeared
or disappeared depending on transport. - #1331 (open): a framework-written
FAILEDstatus carried no
status.timestamp, andsrc/a2a/server/tasks/database_task_store.py:152-157
deriveslast_updatedfrom it, so the row persistedNULLand dropped out
ofListTasksordering. - #1188 (open) / #1409 (open): the handler resumes or returns from a snapshot
that disagrees with what later reaches the store and the stream. - #1206 (closed as stale) → #1411 (open):
contextIdinference makes events
disagree with the storedTask. - Review findings on #1346: stamping the local copy after
task.status.CopyFrom(event.status)leaves the published event unstamped
(src/a2a/server/tasks/task_manager.py:285), and theCANCELEDpaths at
src/a2a/server/agent_execution/active_task.py:971-973keep the previous
state's timestamp. These were caught by review, not by any documented rule.
The same confusion shows up in the discussion forum, where it has no issue
tracker to land in: #248 ("Should Message events terminate…", 6 comments),
#435, #40 ("What's the purpose of EventQueue?"), and the multi-replica thread
#1224 / #336.
Describe the solution you'd like
A new skill, .agents/skills/task-state-invariants/SKILL.md, in the same
shape as mistake-reflection (trigger list → procedure → anti-patterns),
covering:
- the invariant set, each claim anchored to current
main(terminal states
need a timestamp; stamp the event beforeCopyFrom;CopyFrominherits
the old timestamp; push delivery is best-effort; zero events means a hung
caller; store and stream must agree; v0.3 compat has two independent
mappers; continuation identity is inferred per spec §3.4.3); - a sibling-surface checklist to run before declaring such a change done
(persisted store, streaming subscribers, push notification, cluster
task_eventstable, both compat mappers); - a test map naming the existing file per surface, so coverage lands where
the surface is; - the evidence a PR in this area should carry, consistent with
docs/ai/evidence_rules.md.
Plus a one-line pointer in AGENTS.md "Mandatory workflow". That pointer
matters: AGENTS.md is the only file in the repo that routes to
.agents/skills/, so a skill without a route is never loaded.
Describe alternatives you considered
- A
docs/ai/rules page. Rejected as the primary form:docs/ai/*is
read at task start, while this knowledge is only useful at the moment you
touch a status write — which is howmistake-reflectionis structured.
Happy to have both if maintainers prefer the rule text to live indocs/ai
with the skill as a thin pointer. - Encoding it only in tests. Partially useful, but tests cannot tell a
change agent which sibling surface they forgot. - Fixing each bug as it arrives. Six-plus in about six weeks suggests the
per-bug loop is not converging.
Additional context
Scouting the rule layer, .agents/skills/ has exactly one skill today and it
was introduced internally by #1059 — I found no precedent for an externally
contributed skill, so raising this first rather than assuming. A draft
implementation (skill + the one-line router pointer, markdown-only, no
runtime code) is ready and filed as a PR linked to this issue. Easy to trim:
drop the AGENTS.md line, or scope the skill to the compat-mapper and
timestamp rules only.
Code of Conduct
- I agree to follow this project's Code of Conduct
- Ngôn ngữ chính
- Python
- Star
- 2.2k
- Fork
- 528
- Merge trung bình
- 3 ngày 17 giờ
- Pull request đã merge (30 ngày)
- 43
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của a2aproject/a2a-python
-
[Bug]: `A2A-Version` validation ignores minor versions and the query parameterCó thể đã có người làm @rohityan đã nhận 69 ngày trước. Đang mởcomponent: server status:awaiting response
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
a2aproject/a2a-python#1204 · 3 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
-
[Bug]: REST task/request id sanitizationCó thể đã có người làm @Linux2010 đã nhận 128 ngày trước. Đang mởmaintainers-only
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
a2aproject/a2a-python#805 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
[Bug]: CancelTaskRequest.metadata never reaches AgentExecutor.cancelCó thể đã có người làm @muscariello đã nhận hôm nay. Đang mởmaintainers-only
a2aproject/a2a-python#1415 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
-
[Bug]: taskId-only continuation still fails required contextId inference in SDK 1.3.0 (follow-up to #1206)Có thể đã có người làm @rohityan đã nhận 2 ngày trước. Đang mởcomponent: server status:awaiting response
a2aproject/a2a-python#1411 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
-
[Feat]: Add a PermissionDenied server error with HTTP 403 and gRPC PERMISSION_DENIED mappingsCó thể đã có người làm @Iwaniukooo11 đã nhận 1 ngày trước. Đang mởcomponent: core status: needs review
a2aproject/a2a-python#1410 · 2 bình luận · 2 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của a2aproject/a2a-python
Issue tương tự
-
New InternshipĐang mởnew_internship
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
get_graph warns that the oneway column is missing when no way has a oneway tagCó thể đã có người làm @HTenkanen đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
cython/cython#8110 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
fix: security 🔐 style: article/section 📝 system: data-mgmt 🗃️ system: security 🔐 system: software 💻
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
uabrc/uabrc.github.io#1267 ·
-
Link Checker ReportĐang mởBot Type: Bug Type: Documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Maintainer thường phản hồi trong vòng 1 ngày