create-task.sh templating: name/description text containing a frontmatter key substring corrupts the file
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 76/100
Hướng nghiên cứu
Bắt đầu trong agents/task-create/create-task.sh, quanh các dòng 495–510, và kiểm tra khối tạo template bằng Python cùng các phép thay thế của nó. Kiểm tra cách name và description được chèn so với các phép thay thế trường frontmatter; tái hiện bằng các ví dụ được cung cấp owner:human hoặc workflow_type:. Được xem là hoàn tất khi văn bản của bên gọi được giữ nguyên, các trường frontmatter bắt buộc được điền và tệp task vượt qua bước xác thực schema.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Context
- Framework version: 1.6.768
- Project: 1409-sprind (shared-tooling mode)
- Reported: 2026-09-21T12:06:04Z
Description
Symptom
agents/task-create/create-task.sh can silently write a schema-invalid task file (required fields blank) and silently corrupt the caller-supplied name/description text, with no error raised, when the name or description happens to contain certain substrings.
Root cause
Around line 495-510, the Python templating block runs a sequence of t.replace(old, new, 1) calls in this order:
t = t.replace('name:', 'name: "' + name... , 1)
t = t.replace('description: >', 'description: >\n' + indent_block(desc), 1)
t = t.replace('status: captured', 'status: ' + e['TC_STATUS'])
t = t.replace('workflow_type:', 'workflow_type: ' + e['TC_WORKFLOW_TYPE'], 1)
t = t.replace('owner:', 'owner: ' + e['TC_OWNER'], 1)
t = t.replace('horizon: now', 'horizon: ' + e['TC_HORIZON'])
t = t.replace('tags: []', 'tags: ' + e['TC_TAGS_YAML'])
t = t.replace('related_tasks: []', 'related_tasks: ' + e['TC_RELATED_YAML'])
...
The name and description are spliced into t first. The subsequent replace(..., 1) calls for workflow_type:, owner:, tags: [], related_tasks: [], horizon: now, created:, last_update: all match the first literal occurrence anywhere in t — not the frontmatter key specifically. Since t now contains the caller's free-text name/description before the real frontmatter lines further down, any of those literal substrings appearing inside the caller-supplied text is matched instead of the intended frontmatter line.
Reproduction (both observed in one session against a real fw task create call)
--namecontaining the literal textowner:human(as a natural-language description of an ownership condition) → written file: thename:frontmatter field reads"...owner: agenthuman..."(the stringagentwas spliced into the middle of the caller's own text), and the realowner:frontmatter line was left blank (a required field).--descriptioncontaining the literal textworkflow_type:→ written file: the description text is corrupted withworkflow_type: buildspliced in mid-sentence, and the realworkflow_type:frontmatter line was left blank (a required field).
Both corrupted files passed task creation with no warning or error — the schema-required fields being blank went undetected until a later gate (fw bvp estimate, in this case) refused to operate on the task.
Why it matters
This is a data-integrity bug in the framework's own primary task-creation entrypoint: required fields can end up silently blank, and free-text content the caller explicitly wrote is silently mangled, with zero error signal. Any task whose subject matter is about frontmatter fields (which is common for meta/tooling tasks, audit findings about the task schema itself, etc.) is at risk of triggering this.
Suggested fix
Anchor each frontmatter-field replace to the actual frontmatter line rather than a bare substring — e.g. a re.sub(r'^workflow_type:$', ..., t, count=1, flags=re.MULTILINE) (matching the empty-value template line specifically) instead of str.replace('workflow_type:', ..., 1). Alternatively, perform all frontmatter-field substitutions before splicing in the caller-supplied name/description text, so free text can never be a match target.
Scope note
Filed from a downstream project using .agentic-framework/ in shared-tooling (vendored, read-only) mode.
Reported via fw upstream report from field installation
- Ngôn ngữ chính
- Shell
- Star
- 16
- Fork
- 6
- Merge trung bình
- 6 giờ 24 phút
- Pull request đã merge (30 ngày)
- 5
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Không 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 DimitriGeelen/agentic-engineering-framework
-
area:cli bug severity:low status:fixed-on-bleeding-edge triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
DimitriGeelen/agentic-engineering-framework#100 · 5 bình luận ·
-
area:cli bug severity:medium status:fixed-on-bleeding-edge triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
DimitriGeelen/agentic-engineering-framework#97 · 5 bình luận ·
-
area:context bug severity:low status:fixed-on-bleeding-edge triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
DimitriGeelen/agentic-engineering-framework#96 · 5 bình luận ·
-
area:docs bug severity:medium status:in-progress triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
DimitriGeelen/agentic-engineering-framework#95 · 4 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
Tất cả issue của DimitriGeelen/agentic-engineering-framework
Issue tương tự
-
Screensaver picked up transparency setting from GhosttyCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởbug
Độ 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
-
Link Checker ReportĐang mởautomated issue report
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
a2aproject/A2A#2387 ·
Maintainer thường phản hồi trong vòng 4 ngày
-
Request: add Vibe TyperĐang mở
Độ 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
-
curriculum documentation quality
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
githubnext/gh-aw-workshop#4965 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[feat] help flags for zi and zĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
ajeetdsouza/zoxide#1350 ·
Maintainer thường phản hồi trong vòng 2 ngày