create-task.sh templating: name/description text containing a frontmatter key substring corrupts the file
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 76/100
Direção de pesquisa
Comece em agents/task-create/create-task.sh, por volta das linhas 495–510, e inspecione o bloco de templating em Python e suas substituições. Verifique como name e description são inseridos em relação às substituições dos campos de frontmatter; reproduza com os exemplos fornecidos owner:human ou workflow_type:. Está concluído quando o texto do chamador é preservado, os campos obrigatórios de frontmatter são preenchidos e o arquivo da tarefa passa pela validação do esquema.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- Shell
- Estrelas
- 16
- Forks
- 6
- Merge médio
- 6h 24min
- PRs com merge (30d)
- 5
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de DimitriGeelen/agentic-engineering-framework
-
area:cli bug severity:low status:fixed-on-bleeding-edge triaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
DimitriGeelen/agentic-engineering-framework#100 · 5 comentários ·
-
area:cli bug severity:medium status:fixed-on-bleeding-edge triaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
DimitriGeelen/agentic-engineering-framework#97 · 5 comentários ·
-
area:context bug severity:low status:fixed-on-bleeding-edge triaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
DimitriGeelen/agentic-engineering-framework#96 · 5 comentários ·
-
area:docs bug severity:medium status:in-progress triaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
DimitriGeelen/agentic-engineering-framework#95 · 4 comentários ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
Todas as issues de DimitriGeelen/agentic-engineering-framework
Issues semelhantes
-
[Request] Add BBportAbertaenhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Leonxlnx/taste-skill#164 ·
Mantenedores costumam responder em até 1 dia
-
patch: moving an executable script removes its executable bitTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Abertareproduced
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
anomalyco/opencode#58651 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
使用脚本 DD 腾讯云 报错Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100