Extensibility requests triage + implementation - #762
Conversation
There was a problem hiding this comment.
Pull request overview
Adds benchmark support for implementing and triaging Business Central extensibility requests.
Changes:
- Adds
ext-implementandext-triagedatasets, pipelines, results, and category wiring. - Adds extensibility agent skills, triage phases, rules, and prompts.
- Updates tests, documentation, workflows, and agent configuration.
Reviewed changes
Copilot reviewed 60 out of 60 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
tests/test_type_exhaustiveness.py |
Covers new entry types |
tests/test_agent_skills.py |
Uses explicit UTF-8 |
tests/conftest.py |
Adds extensibility fixtures |
src/bcbench/types.py |
Registers new categories |
src/bcbench/results/extriage.py |
Adds triage results |
src/bcbench/results/__init__.py |
Exports triage result |
src/bcbench/evaluate/extriage.py |
Implements triage pipeline |
src/bcbench/evaluate/extimplement.py |
Implements request pipeline |
src/bcbench/evaluate/__init__.py |
Exports new pipelines |
src/bcbench/dataset/dataset_entry.py |
Adds entry schemas |
src/bcbench/dataset/__init__.py |
Exports entry schemas |
src/bcbench/commands/evaluate.py |
Adds mock scenarios |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/templates/result-contract.md |
Defines triage output |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/SKILL.md |
Defines triage skill |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/shared-rules.md |
Defines shared rules |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/phases/7-finalize.md |
Defines finalization |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/phases/6-team-assignment.md |
Defines team assignment |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/phases/5-codebase-analysis.md |
Defines code analysis |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/phases/4-requirements.md |
Defines requirements checks |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/phases/3-classify.md |
Defines classification |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/phases/2b-bcapps-check.md |
Defines BCApps check |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/phases/2-eligibility.md |
Defines eligibility |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/phases/1-preprocess.md |
Defines preprocessing |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/phases/0-startup.md |
Defines startup checks |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/orchestrator.md |
Orchestrates triage phases |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/team-configuration/team_namespace_mapping.yaml |
Maps namespaces to teams |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/request_for_external_requirements.yaml |
Adds external requirements |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/general_requirements.yaml |
Adds general requirements |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/extensibility_enhancement_requirements.yaml |
Adds enhancement requirements |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/event_request_requirements.yaml |
Adds event requirements |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/enum_request_requirements.yaml |
Adds enum requirements |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/comment-templates/comment_templates.yaml |
Adds response templates |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/codebase-rules/request_for_external_implementation.yaml |
Adds accessibility rules |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/codebase-rules/general_blockers.yaml |
Adds general blockers |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/codebase-rules/event_request_warnings.yaml |
Adds event warnings |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/codebase-rules/event_request_ishandled_warnings.yaml |
Adds IsHandled warnings |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/codebase-rules/event_request_ishandled_implementation.yaml |
Adds IsHandled guidance |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/codebase-rules/event_request_ishandled_blockers.yaml |
Adds IsHandled blockers |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/codebase-rules/event_request_ishandled_alternative_suggestions.yaml |
Adds IsHandled alternatives |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/codebase-rules/event_request_implementation.yaml |
Adds event guidance |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/codebase-rules/event_request_alternative_suggestions.yaml |
Adds event alternatives |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/compatibility.md |
Maps host capabilities |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/ai-ext-fix/SKILL.md |
Adds implementation skill |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/ai-ext-fix/guidelines.md |
Adds AL event guidelines |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/agents/argus-triage.agent.md |
Adds triage agent |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/agents/argus-codebase-analysis.agent.md |
Adds analysis sub-agent |
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/agents/ai-ext-fix.agent.md |
Adds implementation agent |
src/bcbench/agent/shared/config.yaml |
Adds category prompts |
src/bcbench/agent/copilot/agent.py |
Expands logging |
dataset/problemstatement/microsoftInternal__NAV-Ext_Impl-30377/README.md |
Adds report request |
dataset/problemstatement/microsoftInternal__NAV-Ext_Impl-30362/README.md |
Adds Service-Post request |
dataset/problemstatement/microsoftInternal__NAV-Ext_Impl-30361/README.md |
Adds archive request |
dataset/problemstatement/microsoftInternal__NAV-Ext_Impl-30346/README.md |
Adds accessibility request |
dataset/problemstatement/microsoftInternal__NAV-Ext_Impl-30336/README.md |
Adds routing-line request |
dataset/problemstatement/microsoftInternal__NAV-Ext_Impl-30223/README.md |
Adds Purchase Line request |
dataset/extriage.jsonl |
Adds triage benchmark entries |
CATEGORIES.md |
Documents new categories |
.github/workflows/copilot-evaluation.yml |
Exposes implementation category |
.github/workflows/claude-evaluation.yml |
Exposes implementation category |
Comments suppressed due to low confidence (3)
src/bcbench/evaluate/extriage.py:145
- These fields come from unconstrained agent JSON, but the code assumes
labels_to_setislist[str]and coerces arbitrary comment/state values withstr(). For example,labels_to_set: 1raisesTypeErrorin_normalize_labelsand aborts the entry. Validate the fullFinal_Outputcontract before grading and save a failed result for invalid field types.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/event_request_requirements.yaml:103 flexible_validationandvalidation_notesare over-indented relative to the requirement item, making this YAML invalid rather than attaching the relaxed policy todata_sensitivity_review.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/event_request_requirements.yaml:118flexible_validationandvalidation_notesare over-indented relative to the requirement item, making this YAML invalid rather than attaching the relaxed policy tomulti_extension_interaction.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 60 out of 60 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (8)
src/bcbench/agent/shared/config.yaml:84
- This prompt requires
argus-triage, but the same agent config hasskills.enabled: false, sosetup_agent_skills()never installs that skill into the target checkout. Both Copilot and Claude will therefore be asked to run a skill that is unavailable. Enable/install the skill for this category, or make the prompt self-contained.
Task: Run the `argus-triage` skill end to end on the extensibility request below and produce its
triage decision. Follow the skill's phases (preprocess, eligibility, classify, requirements,
src/bcbench/agent/shared/config.yaml:70
- The NAV checkout and every new problem statement use
App/Layers/..., notsrc/Layers/.... This instruction prevents agents from recognizing W1 files and propagating changes to localization counterparts.
- W1-first layering: when the file to change exists under `src/Layers/W1/...`, change W1 first, then apply
the same change to every same-named counterpart file in the other country/region layers. If the file
exists only in a specific country layer, edit that layer directly.
src/bcbench/dataset/dataset_entry.py:224
- The offline task omits metadata required by the mandated eligibility phases: current issue state/type, author,
updatedAt, and dated comment authorship. In particular, entries already labeledmissing-infocannot evaluate the “bot last commenter” or 30-day rules, so their expected open/closed decision is not derivable from the prompt. Model these fields and render them here, or remove those checks in offline mode.
src/bcbench/evaluate/extriage.py:108 - Malformed judge output currently escapes as
JSONDecodeError/AttributeErrorand fails the whole evaluation, while string values such as"false"are truthy and can incorrectly pass. Convert unreadable or schema-invalid verdicts toLLMJudgeErrorand require an actual boolean.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/phases/5-codebase-analysis.md:36 - Not every rule stored in a
blockersfile means auto-reject. For example,potential_security_riskhasaction: include_human,entity_not_foundhasaction: request_clarification, andishandled_unsafe_code_blockhasaction: suggest_alternative. Mapping every match toauto-rejectcloses requests that should instead be routed for human review or clarification.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/enum_request_requirements.yaml:30 - Phase 3 emits subtype
extend_existing_enum, but this requirements file names the sectionextend_enum. The requirements for target enum and compatibility therefore cannot be selected for requests that extend an existing enum.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/event_request_requirements.yaml:88 - These keys are over-indented beneath the scalar
validation_hints, making this YAML invalid; the same defect is repeated fordata_sensitivity_reviewandmulti_extension_interactionbelow. Any YAML-aware reader will fail to load the event requirements, blocking Phase 4 for event requests.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/phases/4-requirements.md:18 - The requirements data includes
action: auto_reject(for examplereject_ishandled_only_for_locktable), but this dispatcher recognizes onlyreject. Such a matched rule falls through and becomesmissing-inforather than closing the rejected request.
haoranpb
left a comment
There was a problem hiding this comment.
Great work, it is close. Left some comments about styling => let's spell the name out.
Regarding the evaluation method, take a look at how nl2al is using LMChecklist, sounds like a good fit for your senarios
…ensibility/implementation # Conflicts: # src/bcbench/dataset/__init__.py # src/bcbench/dataset/dataset_entry.py
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 60 out of 60 changed files in this pull request and generated 2 comments.
Suppressed comments (8)
src/bcbench/agent/shared/config.yaml:86
- The triage prompt requires
argus-triage, but this configuration still hasskills.enabled: false, andsetup_agent_skills()only copies profile skills when that flag is true. The evaluated NAV checkout therefore has no such skill or knowledge files, so the agent cannot execute the workflow this prompt requires. Enable/install the skill for these categories (ideally category-selectively) before advertising it in the prompt.
Task: Run the `argus-triage` skill end to end on the extensibility request below and produce its
triage decision. Follow the skill's phases (preprocess, eligibility, classify, requirements,
codebase analysis, team assignment, finalize) and its knowledge base to decide the managed labels,
the advisory comment, and whether the request should stay open or be closed.
src/bcbench/agent/shared/config.yaml:70
- The NAV dataset and every new problem statement use
App/Layers/W1/..., notsrc/Layers/W1/.... With this path, an agent following the benchmark prompt will miss W1 and skip required country-layer propagation. UseApp/Layers/W1/...here.
- W1-first layering: when the file to change exists under `src/Layers/W1/...`, change W1 first, then apply
the same change to every same-named counterpart file in the other country/region layers. If the file
exists only in a specific country layer, edit that layer directly.
src/bcbench/evaluate/extriage.py:108
- A malformed judge artifact currently escapes as
JSONDecodeError(orAttributeErrorwhen the JSON is not an object), whileevaluate()only catchesLLMJudgeError. Since this file is LLM-generated, one invalid response crashes the entire evaluation instead of recordingcomment_ok=False. Validate and wrap parse/type failures asLLMJudgeError.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/phases/5-codebase-analysis.md:36 - The Phase 5 algorithm maps every rule in the
blockersbatch toauto-reject, but that batch contains other required outcomes:ishandled_unsafe_code_blockusessuggest_alternative,potential_security_riskusesinclude_human, andentity_not_foundusesrequest_clarification. Those cases will therefore be closed as rejections instead of becoming missing-info/manual-review outcomes. Dispatch on each matched rule'sactionrather than its file category.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/enum_request_requirements.yaml:32 - Phase 3 emits the subtype
extend_existing_enum, and the orchestrator uses that same name when loading subtype rules, but this requirements file definesextend_enum. Existing-enum requests therefore do not match their subtype-specific requirements. Rename this key to the canonical subtype.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/event_request_requirements.yaml:184 - Phase 4 only recognizes requirement actions
rejectandagent-not-processable;auto_rejectis never handled there. As a result, a request solely trying to bypassLockTablecan miss the required rejection path. Use the Phase 4 action vocabulary (reject) for this requirement.
src/bcbench/evaluate/extriage.py:126 - This new evaluator has no focused tests, although the analogous judge-based pipeline is covered in
tests/test_nl2al_pipeline.py. Add tests for missing/unparsable output, wrapped versus flatFinal_Output, invalid field types, judge failure, and pass/fail aggregation so contract regressions do not crash evaluation jobs.
src/bcbench/evaluate/extimplement.py:57 - The new judge-based pipeline is untested, while
NL2ALPipeline.evaluate()has dedicated empty/non-empty-diff coverage intests/test_nl2al_pipeline.py. Add equivalent tests forExtImplementPipeline.evaluate()and its workspace setup, especially that only AL edits are captured and empty output persists the expected result.
…ding Applies Haoran's review feedback for the extensibility-request categories: - Rename to explicit `extensibility-request-implement` / `extensibility-request-triage` across category ids, enum members, classes, dataset files and module files (#1/#2/#4). - Slim both prompt templates to reflect real-world usage; category-specific rules now live in the ai-ext-fix / argus-triage skills (#3). - Merge duplicate `bcbench.results` import in commands/evaluate.py (#5). - Uptake #761: both ext entries subclass `RepoGroundedEntry` (#6/#7). - Triage `patch` defaults to None; stripped from the dataset (#8). - Constrain triage label fields with a `ManagedLabel` Literal to catch dataset typos (#9). - Move the ext dataset classes into dataset/extensibility_request.py, like code review (#10). - Drop `fetch_commit_if_missing` from both ext pipelines to match the other pipelines (#11). - Keep ext-implement judge-only for now; container build/publish noted as future work (#12). - Grade triage with the NL2AL LMChecklist instead of the code-review-style hybrid: `ExtRequestTriageResult` removed in favour of `JudgeBasedEvaluationResult`, expected_* fields replaced by an `expected` checklist, evaluators `lm_checklist`, core score `test_passed`; 17 triage entries migrated (#13/#14/#15/#16). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fb712366-b026-470c-9d09-1bd9e9f52a31
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 59 out of 59 changed files in this pull request and generated 1 comment.
Suppressed comments (13)
src/bcbench/agent/shared/config.yaml:75
- The triage prompt depends on “the skill's
Final_Outputobject,” but the default config still has bothskills.enabled: falseandagents.enabled: false, and the runners read that config directly. Consequently, normal workflow runs never copyargus-triageor select its agent, so the model is asked to follow a JSON contract and triage procedure that are unavailable. Make skill/agent selection category-aware, or make this prompt self-contained.
- Write your final decision as valid JSON to `triage_result.json` in {{repo_path}}, containing exactly the skill's `Final_Output` object. Do not apply it through any host tool.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/general_requirements.yaml:112
- This key is indented deeper than its sibling
rationale; the subsequent dedent makes the newly added knowledge file invalid YAML, so a YAML loader cannot consume the general requirements. Align it with the otherquality_standardskeys.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/event_request_requirements.yaml:88 - These mapping keys are over-indented beneath the inline
validation_hintsvalue, which is invalid YAML. Align them with the other fields of this requirement so the IsHandled requirements file can be loaded.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/event_request_requirements.yaml:103 - These mapping keys are over-indented beneath the inline
validation_hintsvalue, making this YAML invalid. Align them with the other fields of the requirement.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/event_request_requirements.yaml:118 - These mapping keys are over-indented beneath the inline
validation_hintsvalue, making this YAML invalid. Align them with the other fields of the requirement.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/enum_request_requirements.yaml:30 - The classifier and orchestrator call this subtype
extend_existing_enum, but the requirements file names itextend_enum. A subtype lookup based on the emittedSUBTYPEtherefore misses these mandatory requirements. Use the same identifier throughout the workflow.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/SKILL.md:31 - These hard-coded repository assumptions do not match this category's checkout. Entries target
microsoftInternal/NAVand their AL projects are underApp/Layers/..., whereas the skill checksmicrosoft/BCAppsTestand./src; the startup source check will therefore fail before triage. Derive repository and code roots from the evaluation context/project paths.
Everything is local in **`microsoft/BCAppsTest`**:
- The **issue** is in this repo → operated on with `gh`.
- The **AL source** is checked out at **`CODE_ROOT = ./src`** → Phase 5 reads local files
(no remote GitHub API, no codebase token).
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/codebase-rules/event_request_ishandled_alternative_suggestions.yaml:6
- Every other subtype rule identifies this target as
event-request/ishandled; this hyphenated value does not match the classifier's type/subtype contract, so action filtering can skip the only rule in this file. Use the established subtype identifier.
applies_to: ["event-request-ishandled"]
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/phases/5-codebase-analysis.md:33
- This blanket mapping ignores each rule's declared action. For example,
potential_security_riskusesinclude_humanand explicitly requiresagent-not-processable, whileentity_not_foundusesrequest_clarification; both are in the blocker batch and will be converted toauto-reject/closed here. Dispatch matched blockers according to theiractioninstead of closing every match.
src/bcbench/dataset/extensibility_request.py:48 - The triage skill classifies and emits
extensibility-enhancementas a managed request-type label, but this public input type rejects that label incurrent_labels. A previously triaged enhancement entry therefore cannot be loaded. Keep the schema aligned with the skill's managed-label set.
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/argus-triage/knowledge/input-requirements/event_request_requirements.yaml:184 - Phase 4 only recognizes
action: rejectandaction: agent-not-processable;auto_rejectis not handled there. A request whose IsHandled block only skipsLockTablewill therefore fall through to the generic missing-info path instead of being closed as this rule requires. Use the action value defined by the requirements workflow.
src/bcbench/evaluate/ext_request_implement.py:59 - The new pipeline's raw-diff and empty-diff result paths are untested, while analogous judge-based pipeline behavior is covered in
tests/test_nl2al_pipeline.py. Add tests that mockstage_and_get_difffor both outcomes and verify the savedJudgeBasedEvaluationResult; otherwise regressions in this category can pass the exhaustiveness test unnoticed.
src/bcbench/evaluate/ext_request_triage.py:47 - No test exercises the triage artifact contract introduced here. Add coverage for a missing file, a whitespace-only file, and a non-empty UTF-8 JSON file, asserting the empty/raw result saved in each case; existing judge-based pipelines have dedicated tests, so the current exhaustiveness fixture does not cover this behavior.
Rename the copied argus-triage skill/agents to extensibility-request-triage (and ai-ext-fix -> extensibility-request-implement) and rework the triage skill to run offline for evals: request comes from prompt text, source under caller-supplied CODE_ROOT, decision written to triage_result.json instead of applied via gh. Drop Argus branding, ISSUE_NUMBER, BCAppsTest and ./src hard-coding, and author/timestamp eligibility checks. Fix knowledge/rule bugs found in review: invalid YAML indentation in general_requirements.yaml and event_request_requirements.yaml; align enum subtype extend_enum -> extend_existing_enum; correct IsHandled applicability id to event-request/ishandled; add missing approved_extensibility_enhancement comment template; dispatch Phase 5 blockers by each rule's own action instead of blanket auto-reject. Update types.py comment and ext_request_triage.py docstring to drop stale names. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fb712366-b026-470c-9d09-1bd9e9f52a31
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 59 out of 59 changed files in this pull request and generated 2 comments.
Suppressed comments (3)
src/bcbench/agent/shared/instructions/microsoftInternal-NAV/skills/extensibility-request-triage/phases/4-requirements.md:14
- The requirement files embed subtype requirements under
subtypes(for example,event_request_requirements.yamlcontains bothishandledandregular), and no separate subtype files exist. Telling the agent to evaluate every requirement in the type file makes regular events fail IsHandled-only checks and makes one enum subtype fail the other subtype's checks. Select only common requirements plus the active subtype.
src/bcbench/dataset/extensibility_request.py:51 extensibility-enhancementis a managed request-type label inshared-rules.md:10-14and is emitted by the classifier, but it is absent from this literal. Any future triage entry already carrying that managed label will fail Pydantic validation before evaluation starts.
tests/test_type_exhaustiveness.py:45- This signature exceeds the repository's 200-character Ruff line length and will be reformatted by the required
ruff-formathook. Apply the formatter (or split the parameters) so the formatting check does not leave this file modified.
| "Final_Output": { | ||
| "labels_to_set": ["Finance", "event-request"], | ||
| "comment_to_post": "Hi, ...", | ||
| "request_state": "open", |
| Important constraints: | ||
| - This runs offline: read the request from the text below, do NOT call `gh` or touch any live issue. | ||
| - Do NOT build or run tests; base codebase analysis on the local `.al` files under {{repo_path}}. | ||
| - Write your final decision as valid JSON to `triage_result.json` in {{repo_path}}, containing exactly the skill's `Final_Output` object. Do not apply it through any host tool. |
haoranpb
left a comment
There was a problem hiding this comment.
Great progress, you should be able to trigger some runs and how/if things works.
Start with test run (with few entries) and cheaper models.
With LMChecklist, you should be able to view results in Kuisto, link shared in private chat.
| return {"assertions": self.expected} | ||
|
|
||
|
|
||
| ManagedLabel = Literal[ |
There was a problem hiding this comment.
[nit] For consistancy with the rest of codebase, more explicit typing
| ManagedLabel = Literal[ | |
| type ManagedLabel = Literal[ |
| __all__ = ["ExtRequestImplementPipeline"] | ||
|
|
||
|
|
||
| def _copy_problem_statement(entry: ExtRequestImplementEntry, repo_path: Path) -> None: |
There was a problem hiding this comment.
Can you take a look at copy_problem_statement_folder in instruction_operations.py?
Probably need to reflex the type of entry to RepoGroundedEntry, but then you could re-use that function instead of creating/maintaining your own
| if not raw: | ||
| result = JudgeBasedEvaluationResult.create_empty_output(context) | ||
| logger.warning(f"Agent produced no {TRIAGE_RESULT_FILE} for {context.entry.instance_id}") |
There was a problem hiding this comment.
Consider just let it fail if not raw, meaning we probaly want to investigate what is wrong, why no file is generated
| case EvaluationCategory.BUG_FIX | EvaluationCategory.TEST_GENERATION: | ||
| return "GitHub-BCBench" | ||
| case EvaluationCategory.CODE_REVIEW: | ||
| case EvaluationCategory.CODE_REVIEW | EvaluationCategory.EXT_REQUEST_IMPLEMENT | EvaluationCategory.EXT_REQUEST_TRIAGE: |
There was a problem hiding this comment.
Can't remember if I mentioned this, but do remember to check if this matches your production workflow
No description provided.