frizz 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -17
- package/dist/claude-agent-broker.js +63 -23
- package/dist/dev-child.js +6877 -4459
- package/dist/frizz.js +654 -529
- package/package.json +6 -2
- package/runtime/cc-worker/.claude-plugin/plugin.json +1 -1
- package/runtime/cc-worker/DECISIONS.md +64 -4
- package/runtime/cc-worker/bin/frizz-mcp.mjs +494 -57
- package/runtime/cc-worker/hooks/agent-dispatch.mjs +1 -1
- package/runtime/cc-worker/hooks/deny-plan.mjs +1 -1
- package/runtime/cc-worker/hooks/hooks.json +0 -7
- package/runtime/cc-worker/hooks/precompact-instructions.mjs +39 -28
- package/runtime/cc-worker/hooks/scratchpad.mjs +142 -169
- package/runtime/cc-worker/hooks/session-seed.mjs +16 -15
- package/runtime/cc-worker/skills/waits/SKILL.md +2 -2
- package/web-dist/apple-touch-icon.png +0 -0
- package/web-dist/assets/{TerminalPane-ROKHp1ib.js → TerminalPane-CTdetDJJ.js} +2 -2
- package/web-dist/assets/{abnfDiagram-VRR7QNED-DcpdhBs3.js → abnfDiagram-VRR7QNED-BDKrjCMs.js} +1 -1
- package/web-dist/assets/architecture-TIHT7OUA-ChUMo004.js +1 -0
- package/web-dist/assets/{architectureDiagram-ZJ3FMSHR-CUAKf0mn.js → architectureDiagram-ZJ3FMSHR-BJebpUUM.js} +1 -1
- package/web-dist/assets/{blockDiagram-677ZJIJ3-BPwpJIzx.js → blockDiagram-677ZJIJ3-BNbuk25k.js} +1 -1
- package/web-dist/assets/{c4Diagram-LMCZKHZV-1lptuHzZ.js → c4Diagram-LMCZKHZV-lCfyotdU.js} +1 -1
- package/web-dist/assets/channel-pr7r6raB.js +1 -0
- package/web-dist/assets/{chunk-32BRIVSS-CFR9AKjY.js → chunk-32BRIVSS-DP72SEkr.js} +1 -1
- package/web-dist/assets/{chunk-52WLFC77-CM9uct7m.js → chunk-52WLFC77-DxO3gN-p.js} +1 -1
- package/web-dist/assets/{chunk-C7G6YPKG-DiveJARw.js → chunk-C7G6YPKG-BXFx9Vlr.js} +1 -1
- package/web-dist/assets/{chunk-EX3LRPZG-BE1CBw8F.js → chunk-EX3LRPZG-CR3sHpPf.js} +1 -1
- package/web-dist/assets/{chunk-FWX5IMBZ-DL42uXiO.js → chunk-FWX5IMBZ-CJ8L__oG.js} +2 -2
- package/web-dist/assets/{chunk-HOUHSVGY-DPhJWgDw.js → chunk-HOUHSVGY-BCl3JSWr.js} +1 -1
- package/web-dist/assets/{chunk-ICXQ74PX-CwYy-6AP.js → chunk-ICXQ74PX-CZxFMci1.js} +1 -1
- package/web-dist/assets/{chunk-MOJQB5TN-Ds5I9wxq.js → chunk-MOJQB5TN-Ck3_47dB.js} +1 -1
- package/web-dist/assets/{chunk-OGEWGWER-DHiZJwQD.js → chunk-OGEWGWER-CVXjES-F.js} +1 -1
- package/web-dist/assets/{chunk-PUDLZKDR-B-eyQTsF.js → chunk-PUDLZKDR-JjrVgaR7.js} +1 -1
- package/web-dist/assets/{chunk-Q4XR5HBZ-DK7dB3Ti.js → chunk-Q4XR5HBZ-C5YMRAQ0.js} +1 -1
- package/web-dist/assets/{chunk-V7JOEXUC-Dn59m74L.js → chunk-V7JOEXUC-DK0mfUHU.js} +1 -1
- package/web-dist/assets/{chunk-VAUOI2AC-DK7x36hd.js → chunk-VAUOI2AC-BKBntpid.js} +1 -1
- package/web-dist/assets/{chunk-VR4S4FIN-D7-CI3Yl.js → chunk-VR4S4FIN-zgE1dG6U.js} +1 -1
- package/web-dist/assets/{chunk-WYO6CB5R-B3l-mLCs.js → chunk-WYO6CB5R-CZhh1IBq.js} +1 -1
- package/web-dist/assets/{chunk-ZGVPDNZ5-Dobxlxie.js → chunk-ZGVPDNZ5-CrNjIEem.js} +1 -1
- package/web-dist/assets/classDiagram-OUVF2IWQ-CvGbPMn_.js +1 -0
- package/web-dist/assets/classDiagram-v2-EOCWNBFH-CvGbPMn_.js +1 -0
- package/web-dist/assets/{cynefin-VYW2F7L2-Dh7RuEUJ.js → cynefin-VYW2F7L2-Ca_BPfTG.js} +1 -1
- package/web-dist/assets/{cynefinDiagram-TSTJHNR4-ClPi2mZZ.js → cynefinDiagram-TSTJHNR4-CsINQf6g.js} +1 -1
- package/web-dist/assets/{dagre-VKFMJZFB-52_WP1QV.js → dagre-VKFMJZFB-CE0DYMFy.js} +1 -1
- package/web-dist/assets/{diagram-FQU43EPY-D_1zVsTL.js → diagram-FQU43EPY-BqTduEYE.js} +1 -1
- package/web-dist/assets/{diagram-G47NLZAW-CdZxuGUy.js → diagram-G47NLZAW-Cho718s6.js} +1 -1
- package/web-dist/assets/{diagram-NH7WQ7WH-C8pSFu0P.js → diagram-NH7WQ7WH-D0Z8t9UC.js} +1 -1
- package/web-dist/assets/{diagram-OA4YK3LP-C5bjZLre.js → diagram-OA4YK3LP-CBacyeDx.js} +1 -1
- package/web-dist/assets/{diagram-WEI45ONY-Bxzhiuzn.js → diagram-WEI45ONY-CozpXa4j.js} +1 -1
- package/web-dist/assets/{ebnfDiagram-CCIWWBDH-g-Z0J2wP.js → ebnfDiagram-CCIWWBDH-ba4NbQQo.js} +1 -1
- package/web-dist/assets/{erDiagram-Q63AITRT-DVNkgIHp.js → erDiagram-Q63AITRT-B3BciOYa.js} +1 -1
- package/web-dist/assets/eventmodeling-45OFAUF4-DKmyo-jd.js +1 -0
- package/web-dist/assets/flowDiagram-23GEKE2U-DluCBvT4.js +1 -0
- package/web-dist/assets/{ganttDiagram-NO4QXBWP-_71pQYEK.js → ganttDiagram-NO4QXBWP-lPmrRit4.js} +1 -1
- package/web-dist/assets/{gitGraph-TEB2WS4Q-ChIZiGZS.js → gitGraph-TEB2WS4Q-BjyclOq0.js} +1 -1
- package/web-dist/assets/{gitGraphDiagram-IHSO6WYX-DCHAFI0l.js → gitGraphDiagram-IHSO6WYX-pzeb4Yrw.js} +1 -1
- package/web-dist/assets/index-BQtjYMpV.css +1 -0
- package/web-dist/assets/index-CLW1Q49U.js +360 -0
- package/web-dist/assets/{info-DKCQHKI2-BW-n_T1j.js → info-DKCQHKI2-Bwycegvf.js} +1 -1
- package/web-dist/assets/{infoDiagram-FWYZ7A6U-CgDYsKi9.js → infoDiagram-FWYZ7A6U-BCvRGj_5.js} +1 -1
- package/web-dist/assets/{ishikawaDiagram-FXEZZL3T-ClzGNt9N.js → ishikawaDiagram-FXEZZL3T-Ofw1RMj3.js} +1 -1
- package/web-dist/assets/{journeyDiagram-5HDEW3XC-DSCQxkHC.js → journeyDiagram-5HDEW3XC-C5ROwFio.js} +1 -1
- package/web-dist/assets/{kanban-definition-HUTT4EX6-CdrdX9N8.js → kanban-definition-HUTT4EX6-YLPLkpeT.js} +1 -1
- package/web-dist/assets/{line-ha38Dc-1.js → line-KtkNqRgI.js} +1 -1
- package/web-dist/assets/{mermaid-parser.core-Z4uMcpip.js → mermaid-parser.core-D_FfqBe7.js} +3 -3
- package/web-dist/assets/{mermaid.core-iZRq3hbu.js → mermaid.core-Ffv8anVf.js} +3 -3
- package/web-dist/assets/{mindmap-definition-LN4V7U3C-DmhInJO_.js → mindmap-definition-LN4V7U3C-B2jj4vfm.js} +1 -1
- package/web-dist/assets/{packet-7NZHBO7P-DBPB36Kl.js → packet-7NZHBO7P-BjmWHwra.js} +1 -1
- package/web-dist/assets/{pegDiagram-2B236MQR-CAH3ljfj.js → pegDiagram-2B236MQR-Dq3iJDyq.js} +1 -1
- package/web-dist/assets/{pie-RZYD4A2V-_h_eX4Ca.js → pie-RZYD4A2V-jBbH1lv9.js} +1 -1
- package/web-dist/assets/{pieDiagram-ENE6RG2P-DFBPus8j.js → pieDiagram-ENE6RG2P-C3ETW9lq.js} +1 -1
- package/web-dist/assets/{quadrantDiagram-ABIIQ3AL-DMvOCjt8.js → quadrantDiagram-ABIIQ3AL-DItSmme7.js} +1 -1
- package/web-dist/assets/{radar-I7S5WNFK-2EzoPHEZ.js → radar-I7S5WNFK-6ey6crgP.js} +1 -1
- package/web-dist/assets/{railroad-3IZDKUUU-BPJnn-hm.js → railroad-3IZDKUUU-Cii-Mn0E.js} +1 -1
- package/web-dist/assets/railroad-abnf-AHOZXSZD-U_vb4BrX.js +1 -0
- package/web-dist/assets/railroad-ebnf-EBAXGLYW-BIHG7gNU.js +1 -0
- package/web-dist/assets/railroad-peg-LSFZ7HO6-Cpd9r-tB.js +1 -0
- package/web-dist/assets/{railroadDiagram-RFXS5EU6-DKq5FagA.js → railroadDiagram-RFXS5EU6-M363ils_.js} +1 -1
- package/web-dist/assets/{requirementDiagram-TGXJPOKE-BJ5tGazp.js → requirementDiagram-TGXJPOKE-CTs2_V6T.js} +1 -1
- package/web-dist/assets/{sankeyDiagram-HTMAVEWB-XSJjcBhX.js → sankeyDiagram-HTMAVEWB-QTLLcDPD.js} +1 -1
- package/web-dist/assets/{sequenceDiagram-DBY2YBRQ-CBb8emSe.js → sequenceDiagram-DBY2YBRQ-Bxw9Tr6e.js} +1 -1
- package/web-dist/assets/{stateDiagram-2N3HPSRC-DDfRW94V.js → stateDiagram-2N3HPSRC-BecB6roG.js} +1 -1
- package/web-dist/assets/stateDiagram-v2-6OUMAXLB-JXw9T96l.js +1 -0
- package/web-dist/assets/{swimlanes-5IMT3BWC-DvRYbkZi.js → swimlanes-5IMT3BWC-COiYgS0w.js} +1 -1
- package/web-dist/assets/swimlanesDiagram-G3AALYLV--1Wv7FQQ.js +8 -0
- package/web-dist/assets/{timeline-definition-FHXFAJF6-BNUa_DwI.js → timeline-definition-FHXFAJF6-Ci22coeH.js} +1 -1
- package/web-dist/assets/{treeView-QDETBFTQ-I6-IW6nJ.js → treeView-QDETBFTQ-4DW35czh.js} +1 -1
- package/web-dist/assets/{treemap-6X3UGDF4-CWWmEUYJ.js → treemap-6X3UGDF4-Dq_-Z6-Y.js} +1 -1
- package/web-dist/assets/{vennDiagram-L72KCM5P-DTDrPGLk.js → vennDiagram-L72KCM5P-CHQSIEYq.js} +1 -1
- package/web-dist/assets/{wardley-OPB4EBWU-CNsdgXXA.js → wardley-OPB4EBWU-Bwlh7HCY.js} +1 -1
- package/web-dist/assets/{wardleyDiagram-EHGQE667-YE0tq3Kh.js → wardleyDiagram-EHGQE667-DctjuPYn.js} +1 -1
- package/web-dist/assets/{xychartDiagram-FW5EYKEG-D0ofMX8C.js → xychartDiagram-FW5EYKEG-ZoIGosv8.js} +1 -1
- package/web-dist/favicon-16.png +0 -0
- package/web-dist/favicon-32.png +0 -0
- package/web-dist/favicon.svg +17 -61
- package/web-dist/icon-192.png +0 -0
- package/web-dist/icon-512.png +0 -0
- package/web-dist/icon-maskable-512.png +0 -0
- package/web-dist/index.html +19 -8
- package/web-dist/manifest.webmanifest +3 -3
- package/runtime/cc-worker/hooks/scratchpad-stop.mjs +0 -125
- package/runtime/cc-worker/skills/handoff/SKILL.md +0 -209
- package/web-dist/assets/architecture-TIHT7OUA-CAviNivx.js +0 -1
- package/web-dist/assets/channel-CqKDIFQF.js +0 -1
- package/web-dist/assets/classDiagram-OUVF2IWQ-B_-6iXYY.js +0 -1
- package/web-dist/assets/classDiagram-v2-EOCWNBFH-B_-6iXYY.js +0 -1
- package/web-dist/assets/eventmodeling-45OFAUF4-MpmeH5YZ.js +0 -1
- package/web-dist/assets/flowDiagram-23GEKE2U-D-QgjjhF.js +0 -1
- package/web-dist/assets/index-w4v-GZEc.js +0 -358
- package/web-dist/assets/index-zyi22LPz.css +0 -1
- package/web-dist/assets/railroad-abnf-AHOZXSZD-YeUoiySk.js +0 -1
- package/web-dist/assets/railroad-ebnf-EBAXGLYW-Ddw1SuGG.js +0 -1
- package/web-dist/assets/railroad-peg-LSFZ7HO6-Dd8BOGeW.js +0 -1
- package/web-dist/assets/stateDiagram-v2-6OUMAXLB-hc41W5Lx.js +0 -1
- package/web-dist/assets/swimlanesDiagram-G3AALYLV-BZyGdgSG.js +0 -8
|
@@ -46,7 +46,7 @@ const EPILOGUE = `
|
|
|
46
46
|
|
|
47
47
|
---
|
|
48
48
|
[ORCHESTRATION EPILOGUE — auto-appended by the frizz worker dispatch hook] You are a helper sub-agent for a frizz worker. Your final message is the handoff: report your outcome/status; what you did; changed files, artifacts, and commit SHA when applicable; verification or evidence and its result; caveats or unresolved work; and the next action when one remains. A bare "done" or progress-only message is not a complete handoff.
|
|
49
|
-
The worker
|
|
49
|
+
The worker has a scratch directory (it will name the path if it wants your notes on disk). Write your OWN file there — never edit or delete a file another agent wrote, and never treat one shared document as yours to rewrite. Writing your own file there is Frizz coordination state, not a project deliverable or source edit, so it remains allowed when a delegated task limits your deliverable paths with phrases such as "write only <path>" or "do not modify the repo"; never classify it as unauthorized or roll it back. Other project files, including repository-root files, remain governed by your delegated authority; their location alone neither permits nor forbids editing. Do not edit other \`.frizz/\` state unless your prompt explicitly asks you to.
|
|
50
50
|
You have an upward channel while you work: \`SendMessage({to: "main", summary: "<5-10 words>", message: "…"})\` delivers to your dispatcher. Use it when the dispatcher acting before you finish could change the outcome—for example, when you hit an unresolved blocker, complete a milestone another task needs, or discover that your instructions should change. Do not use it for routine progress updates.
|
|
51
51
|
Do the work yourself: do NOT dispatch sub-agents of your own unless your dispatch prompt explicitly tells you to. You are already one prong of someone else's fan-out, and another layer below you buys little — it splits the context you were handed, buries the real work one level further from whoever reads the tree, and leaves you collecting a handoff instead of doing the task. A slice that feels large is still yours to work through in your own turn.
|
|
52
52
|
If your prompt DOES ask you to dispatch a helper, its completion is delivered to you automatically. Never hand-roll a wait loop over a helper's transcript or \`.output\` path to decide whether it finished: that path is a SYMLINK, so \`stat\` without \`-L\` reports the link's own size (the length of its target path, ~150 bytes) and its frozen creation mtime, and the \`"type":"result"\` record is not reliably written — so a helper that is working hard reads as tiny, stale, and dead, and you will discard live work and redo it. Judge a helper only by its completion notification or the text it returns. Give it a \`description\` naming its narrower slice rather than restating your own, so the dispatch tree stays readable.`;
|
|
@@ -47,7 +47,7 @@ try {
|
|
|
47
47
|
// the model reads is `additionalContext`, injected as a plain-text system-reminder. Exit 0 with
|
|
48
48
|
// this JSON on stdout (exit 2 would make Claude Code ignore the JSON — never mix).
|
|
49
49
|
const reason =
|
|
50
|
-
'Interactive plan-approval prompts freeze headless workers (no one is at the keyboard to approve). Do NOT present a plan for approval. Instead: if the plan is settled, just proceed with the work. If the plan is the deliverable, write it into a plan file `.frizz/plans/<topic>.md` (free-form markdown) and/or your
|
|
50
|
+
'Interactive plan-approval prompts freeze headless workers (no one is at the keyboard to approve). Do NOT present a plan for approval. Instead: if the plan is settled, just proceed with the work. If the plan is the deliverable, write it into a plan file `.frizz/plans/<topic>.md` (free-form markdown) and/or a file in your scratch directory. If it needs a human call before you build, ask in your FINAL MESSAGE with a two-option ```question block stating what you need approved, then come to rest — the human reviews it from the frizz queue.';
|
|
51
51
|
|
|
52
52
|
process.stdout.write(
|
|
53
53
|
JSON.stringify({
|
|
@@ -22,20 +22,32 @@
|
|
|
22
22
|
//
|
|
23
23
|
// no hook (control) postTokens 4,060
|
|
24
24
|
// qualitative "prefer a long summary" postTokens 4,429 (+9% — noise)
|
|
25
|
-
// explicit ">= 15,000 words" postTokens 20,339 (5.0x the control)
|
|
25
|
+
// explicit ">= 15,000 words" postTokens 20,339 (5.0x the control)
|
|
26
26
|
// explicit ">= 35,000 words" postTokens 5,182 (WORSE, and slower + dearer)
|
|
27
27
|
//
|
|
28
|
-
//
|
|
29
|
-
// what the model will produce in one response and asking for it
|
|
30
|
-
// the output of the 15,000 ask (2,174 words vs 9,829), at
|
|
31
|
-
//
|
|
28
|
+
// The response is NON-MONOTONIC, so do not move WORD_TARGET far in either direction without
|
|
29
|
+
// re-measuring. 35,000 words is past what the model will produce in one response and asking for it
|
|
30
|
+
// degraded compliance badly — a quarter the output of the 15,000 ask (2,174 words vs 9,829), at
|
|
31
|
+
// 11.2 min / $3.73 vs 8.6 min / $2.04. Three single samples; treat the exact figures as indicative.
|
|
32
32
|
//
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
//
|
|
33
|
+
// WHY IT IS NO LONGER 15,000 (2026-08-06, maintainer: "let's tone this down a bit"). That row is the
|
|
34
|
+
// one that reads as a win in isolation and is the expensive one in production: a 20,339-token summary
|
|
35
|
+
// is where the next context STARTS, so every compaction handed the thread ~16k tokens of overhead over
|
|
36
|
+
// the control before it did any work. On a long-lived thread that compounds — each cycle begins nearer
|
|
37
|
+
// the ceiling, so the next compaction arrives sooner, and the window between them shrinks. Observed on
|
|
38
|
+
// the maintainer's own 10-day `are-taking-over-an-in-flight-epic` thread: 31 compactions, then a
|
|
39
|
+
// cold resume whose replay overflowed the window outright ("Prompt is too long"), leaving a thread that
|
|
40
|
+
// could not complete the one turn that would have compacted it. The latency was the visible cost; the
|
|
41
|
+
// post-compaction FOOTPRINT was the one that actually mattered.
|
|
42
|
+
//
|
|
43
|
+
// 5,000 is UNMEASURED — an explicit number (adjectives measurably do nothing) at a third of the ask,
|
|
44
|
+
// chosen to keep the mechanism that works while cutting what it leaves behind. There is no data point
|
|
45
|
+
// between the qualitative row and 15,000; if this matters, re-run the differential above and add rows.
|
|
46
|
+
//
|
|
47
|
+
// The remaining COST is latency. That is acceptable because frizz workers run with
|
|
48
|
+
// `precomputeCompactionEnabled`, which arms summary generation in a background sidecar at ~80% of the
|
|
49
|
+
// window and swaps it in at the real threshold — so on an `auto` trigger the wait is largely hidden. A
|
|
50
|
+
// `manual` /compact pays it in front of the human.
|
|
39
51
|
//
|
|
40
52
|
// HARD CEILING: the summary is ONE model response, so it is bounded by max output tokens (64k for
|
|
41
53
|
// Opus 5 / Sonnet 5, ~48k words). A 200k-token summary is unreachable at any prompt.
|
|
@@ -46,13 +58,14 @@
|
|
|
46
58
|
// brief about what to retain.
|
|
47
59
|
//
|
|
48
60
|
// GATE: everything is gated on FRIZZ_THREAD, so the plugin stays inert when loaded outside a
|
|
49
|
-
// frizz worker. Sub-agent contexts are skipped, matching session-seed.mjs — the
|
|
61
|
+
// frizz worker. Sub-agent contexts are skipped, matching session-seed.mjs — the scratch-directory path
|
|
50
62
|
// below is only guaranteed correct for the top-level worker session.
|
|
51
63
|
import { readFileSync } from 'node:fs';
|
|
52
64
|
import { currentSessionId } from '../scripts/frizz/config.mjs';
|
|
53
65
|
|
|
54
|
-
// See "LENGTH IS ONLY STEERABLE BY AN EXPLICIT NUMBER" above before
|
|
55
|
-
|
|
66
|
+
// See "LENGTH IS ONLY STEERABLE BY AN EXPLICIT NUMBER" and "WHY IT IS NO LONGER 15,000" above before
|
|
67
|
+
// changing this. The number is load-bearing; the prose around it is not.
|
|
68
|
+
const WORD_TARGET = 5000;
|
|
56
69
|
|
|
57
70
|
/** @type {{ agent_id?: unknown, agentId?: unknown, trigger?: string, session_id?: string }} */
|
|
58
71
|
let input = {};
|
|
@@ -75,27 +88,25 @@ try {
|
|
|
75
88
|
/* best-effort — fall back to the generic path shape below */
|
|
76
89
|
}
|
|
77
90
|
const scratch = sid
|
|
78
|
-
? '.frizz/threads/' + sid + '/
|
|
79
|
-
: '.frizz/threads/<session-id>/
|
|
91
|
+
? '.frizz/threads/' + sid + '/'
|
|
92
|
+
: '.frizz/threads/<session-id>/';
|
|
80
93
|
|
|
81
94
|
// Written as an editorial brief, not as a command block — see TONE MATTERS above.
|
|
82
95
|
const brief = [
|
|
83
|
-
'This is a frizz worker session driving one engineering effort (`' + thread + '`). Three things ' +
|
|
84
|
-
'
|
|
96
|
+
'This is a frizz worker session driving one engineering effort (`' + thread + '`). Three things to ' +
|
|
97
|
+
'get right, because they are what actually gets lost in compaction:',
|
|
85
98
|
'',
|
|
86
|
-
'1. LENGTH.
|
|
87
|
-
|
|
88
|
-
'
|
|
89
|
-
'including something redundant.',
|
|
99
|
+
'1. LENGTH. Target about ' + WORD_TARGET.toLocaleString('en-US') + ' words — long enough that ' +
|
|
100
|
+
'nothing load-bearing has to be dropped, but this is a working handover and not an archive. ' +
|
|
101
|
+
'Spend the length on what the next turn cannot recover for itself.',
|
|
90
102
|
'',
|
|
91
103
|
'2. THE HIGH-LEVEL APPROACH, AT HIGH FIDELITY. Preserve the shape of the work, not just its ' +
|
|
92
104
|
'mechanics: what problem is being solved, the approach chosen, the approaches considered and ' +
|
|
93
|
-
'REJECTED and why, and the reasoning that led there.
|
|
94
|
-
'
|
|
95
|
-
'
|
|
96
|
-
'excerpts of the code and output that matter rather than describing them from memory.',
|
|
105
|
+
'REJECTED and why, and the reasoning that led there. This is the part worth its space — a summary ' +
|
|
106
|
+
'that lists edits but loses the plan leaves the next turn unable to judge whether a step is still ' +
|
|
107
|
+
'the right one. Quote code and output where the exact text matters; summarize where it does not.',
|
|
97
108
|
'',
|
|
98
|
-
'Carry forward
|
|
109
|
+
'Carry forward:',
|
|
99
110
|
'- The task list and its state — every item, marked done / in progress / not started / blocked.',
|
|
100
111
|
'- Decisions made and the rationale for each, especially any the human made, approved, or reversed.',
|
|
101
112
|
'- Constraints, conventions, and explicit human instructions or corrections — in the human\'s own ' +
|
|
@@ -110,7 +121,7 @@ const brief = [
|
|
|
110
121
|
'3. RE-GROUNDING. End the summary with a final section headed exactly "Re-grounding before ' +
|
|
111
122
|
'continuing:" that tells the next turn what to re-establish BEFORE it asserts anything or resumes ' +
|
|
112
123
|
'editing. Make it concrete and specific to this session — not generic advice:',
|
|
113
|
-
'-
|
|
124
|
+
'- Read whatever the worker left in `' + scratch + '` first. That is its durable working state and it ' +
|
|
114
125
|
'outlives this summary.',
|
|
115
126
|
'- Name the specific files to re-read before describing or changing them, rather than relying on ' +
|
|
116
127
|
'remembered contents.',
|