import type { Noul } from "../lib/jev.ts"; // 第 1 轮检验问 Jev 的问题(任务书 14 第 3.2 节第 3 步):英文、一问只问一件事、带材料说明、判"是"判"否"的说明和反例, // 写法照 src/jev/questions.ts。这些是检验自己的问题,不进 src/jev;阈值没有校准,一律以概率大于 0.5 判"是"。 // 提案、挑刺、回应原文是中文,原样放进材料;两个项目的字段名不同(factors 对 points、modification),材料说明里写明。 const STUDY = "One round of a study that improves a program for the circle packing task: place 26 non-overlapping circles inside the unit square " + "so that the sum of their radii is as large as possible (no tolerance: any overlap or circle outside the square is invalid). " + "The baseline program puts the circles on fixed rings around the center and then shrinks radii pair by pair to remove overlaps; " + "it scores about 0.96 and the best known score is about 2.636. " + "In this round each researcher proposed one code change. A proposal's change is given as a list of separate edits " + "(each with a `name`, a `method` saying what to change and how, and sometimes `keySettings`), or as one `modification` text. " + "The texts are mostly in Chinese."; export const TASKS = { pair: `${STUDY} \`proposal_a\` and \`proposal_b\` are the changes of two proposals from the same round.`, idea: `${STUDY} \`proposal\` is the change of one proposal. \`idea\` is a technique from the literature on this task, described in English.`, critique: `${STUDY} After the proposals were written, other researchers wrote critiques of them, and each author replied to every critique ` + "and could revise the proposal before it was frozen as the protocol an implementer must follow. " + "`critique` is one critique of a proposal; `reply` is the author's reply to that critique; " + "`revision` is the rest of the author's response: the changes made to the proposal and the final text, in whatever fields that system used.", }; /** a. 两条提案是不是同一个改法(照方法.md 4.3 ③ 判重的意思:只差参数的不算同一个改法)。 */ export const SAME_CHANGE: Record = { same_change: { type: "noul", instructions: { question: "Would carrying out `proposal_a` and carrying out `proposal_b` produce the same code change, so that a single implementation would serve as both?", focus: "Compare what each change does to the program: which parts it changes and by what method, reading every edit. " + "Ignore wording, language, level of detail, names, and how the change is split into edits. " + "The same method with only different settings (step sizes, counts, time budgets, layouts) is not the same change, because each setting needs its own run.", }, criteria: { true: { what: "Both describe the same algorithmic change to the same part of the program with the same settings; they differ only in wording, detail or how the change is split", examples: [ "a: 把圆心和半径一起交给约束优化器,从当前布局出发; b: optimize centers and radii jointly with SLSQP starting from the current layout", "a: 半径改用线性规划求解; b: 固定圆心,用 linprog 求半径和最大", ], }, false: { what: "They change different parts of the program, change the same part by a different method, or use the same method with different settings", not_for: "Two changes that only share the goal of a higher score, or only edit the same function in different ways", examples: [ "a: 半径改用线性规划求解; b: 把圆心和半径一起交给约束优化器", "a: 6 行六角网格; b: 5 行六角网格", "a: 多起点重启 20 次; b: 多起点重启 200 次", ], }, }, }, }; /** b. 作者的回应有没有处理这条挑刺:改了协议,或者给了不改的具体理由。 */ export const ADDRESSED: Record = { critique_addressed: { type: "noul", instructions: { question: "Does `reply` deal with the concern raised in `critique`, either by a concrete change to the proposal (visible in `reply` or `revision`) or by a specific reason why no change is needed?", focus: "First find the concern in `critique`. Then check whether `reply` engages with that concern: says what was changed and how, or argues specifically why the concern does not apply. " + "Agreeing without saying what changed, promising to consider it, or answering a different point does not deal with the concern. " + "Whether the reply is right is not the question; only whether it deals with the concern.", }, criteria: { true: { what: "The reply states a concrete change that answers the concern, or gives a specific reason tied to the concern for not changing", examples: [ "critique: 停止条件没写锚点; reply: 采纳,t0 改为入口处取 perf_counter,并写进协议的停止条件一节", "critique: 这个因子会改变评分; reply: 不改:评分只读 solution.json,这个因子只改内部的起点,具体见协议第 2 节", ], }, false: { what: "The reply ignores the concern, only agrees or thanks, promises to look later, or answers something else", not_for: "Replies that disagree with the critique but give a specific reason tied to its concern", examples: ["critique: 停止条件没写锚点; reply: 感谢意见,同意", "critique: 两个因子分不开; reply: 我们会在实现时注意"], }, }, }, }; /** c. 提案对研究路径上的关键想法(K1–K5):这条提案的改动是否做了这个想法。 */ export const CARRIES_IDEA: Record = { carries_idea: { type: "noul", instructions: { question: "Does the code change in `proposal` carry out the technique described in `idea.description`, as the whole change or as one of its parts?", focus: "Read every edit of the proposal. Answer yes if one of the edits, or the change as a whole, does what the technique describes, possibly in other words or in Chinese. " + "Mentioning the technique as a later plan, or sharing only the goal, is not enough.", }, criteria: { true: { what: "The proposal's change includes this technique", examples: [ "idea: optimize centers and radii together with a constrained optimizer; proposal: 把 78 个变量交给 SLSQP,约束是在正方形内、两两不重叠", "idea: solve a linear program for the radii with fixed centers; proposal: 半径分配改成 linprog 求半径和最大", ], }, false: { what: "The proposal's change does not include this technique", not_for: "Proposals that only mention the technique as future work, or only share the goal", examples: [ "idea: optimize centers and radii together with a constrained optimizer; proposal: 圆心按六角网格摆,半径用贪心缩放", "idea: solve a linear program for the radii with fixed centers; proposal: 从当前最好解加扰动再跑 SLSQP", ], }, }, }, }; /** c. 提案对死路(D1、D2):这条提案的改动是不是整个都停在这条死路里。 */ export const STAYS_IN_DEAD_END: Record = { stays_within_idea: { type: "noul", instructions: { question: "Does the whole code change in `proposal` stay within the approach described in `idea.description`, with no part that goes beyond it?", focus: "Answer yes only if everything the proposal changes falls inside this approach. " + "If any edit uses a continuous optimization that moves the circle centers, or uses the approach only as a helper step " + "(a starting layout, or a way to score layouts inside a larger search), answer no.", }, criteria: { true: { what: "Everything the proposal changes is inside this approach", examples: [ "idea: hand-designed placement of centers only; proposal: 换成 6 行六角网格,枚举行数取最好,半径用贪心", "idea: change only the radii with fixed centers; proposal: 圆心不动,半径改用线性规划", ], }, false: { what: "Some part of the proposal goes beyond this approach, or the approach is only one step of a larger change", not_for: "Proposals that use this approach as a starting layout or a scoring helper inside a search that moves the centers", examples: [ "idea: hand-designed placement of centers only; proposal: 从六角起点出发,再用 SLSQP 同时移动圆心和半径", "idea: change only the radii with fixed centers; proposal: 半径用线性规划打分,外层搜索圆心位置", ], }, }, }, };