From 229647e1eec27538b0c03f66e0025dbf3c5d0b62 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 7 Nov 2026 14:52:14 +0000 Subject: [PATCH 1/2] docs: apply loaded Page formatting beyond must-create artifacts Formatting applies to every Page generated or updated while the Page rules are actually loaded. Must-create triggers stay limited to review reports, plans, and pending contracts. Co-authored-by: rocky --- scripts/maintenance-regression.test.mjs | 45 ++++++++++ skills/task-lifecycle/SKILL.md | 2 +- ...tifact-content-and-self-review-contract.md | 3 +- .../references/grok-bot-page.md | 82 ++++++++++++++----- .../verification-and-evidence-routing.md | 7 +- 5 files changed, 114 insertions(+), 25 deletions(-) diff --git a/scripts/maintenance-regression.test.mjs b/scripts/maintenance-regression.test.mjs index 86c5c11..9dfcb62 100644 --- a/scripts/maintenance-regression.test.mjs +++ b/scripts/maintenance-regression.test.mjs @@ -1091,3 +1091,48 @@ test('T146 role review reuses evidence before dispatch and invalidates by affect 'review caps, required verification and §7.12 delta rules', 'same-context role review; no independent reviewer', 'Human-only performer choices stay human-only', 'never enables external delegation']) assert.ok(rule.includes(text), text); }); + +test('T148 Page formatting applies to every loaded-rule Page; must-create scope stays narrow',()=>{ + const page=fs.readFileSync(path.join(root,'skills/task-lifecycle/references/grok-bot-page.md'),'utf8').replace(/\s+/g,' '); + const skill=fs.readFileSync(path.join(root,'skills/task-lifecycle/SKILL.md'),'utf8').replace(/\s+/g,' '); + const route=fs.readFileSync(path.join(root,'skills/task-lifecycle/references/verification-and-evidence-routing.md'),'utf8').replace(/\s+/g,' '); + const art=fs.readFileSync(path.join(root,'skills/task-lifecycle/references/artifact-content-and-self-review-contract.md'),'utf8').replace(/\s+/g,' '); + for(const x of [ + '**Must-create scope**: review reports, technical/implementation/fix/review plans and proposals handed to the user, and contract drafts awaiting approval. Length never changes this scope.', + 'does not require every reply to become a Page', + '| Ordinary artifacts, casual options, one decision card, CHANGELOG or config notes | No automatic Page |', + '**Formatting applicability**:', + 'every Page this session generates or updates', + 'including a Page outside item 5', + 'not global enforcement', + 'this Skill merely being active, does not load this file', + 'A generic Page with no formal Markdown gets no invented path, sha256, line count, or approval SHA', + 'for every Page generated or updated while this file is loaded, including a Page outside item 5, set width to "wide" or "full", never "column"', + 'exempt from the 1024px floor', + 'narrow viewports use available width', + '960px cap', + 'only** the gate/branch/execute-against flow segments', + 'Do not invent that section when the content has none', + 'does not by itself create a managed Task or a formal artifact', + 'source-delivery=complete', + 'Page-delivery=pending', + 'An explicit user request for a Page is not automatic and is not a new must-create duty.', + ])assert.ok(page.includes(x),x); + assert.doesNotMatch(page,/every reply must become a Page|all bots must load|every host inherits this formatting/); + for(const x of [ + 'must-create duty for a review report, plan or pending contract', + 'does not make every reply a Page', + 'Skill activation alone is not a load', + 'Other hosts and dispatched sessions do not load it and have no Page duty', + ])assert.ok(skill.includes(x),x); + for(const x of [ + 'owns must-create duty and formatting separately', + 'does not turn every reply into a Page', + 'A generic Page does not invent a formal Markdown path or approval SHA', + 'Other hosts and dispatched sessions do not load it and have no Page duty', + ])assert.ok(route.includes(x),x); + assert.doesNotMatch(route,/1024px|WriteCanvas|Item 12 \*\*Flow-type/); + assert.ok(art.includes('Grok Bot Page must-create duty and formatting both follow')); + assert.ok(art.includes('does not require a Page for every reply')); + assert.ok(art.includes('invents no source path or approval SHA')); +}); diff --git a/skills/task-lifecycle/SKILL.md b/skills/task-lifecycle/SKILL.md index acffe0f..4c11009 100644 --- a/skills/task-lifecycle/SKILL.md +++ b/skills/task-lifecycle/SKILL.md @@ -172,7 +172,7 @@ other phases reference it rather than redefining a looser version. | Specialist Skill missing, discovery, primary/secondary choice | `references/skill-discovery-matching-and-degradation.md`, `references/roles-and-specialist-review.md` | | Per-phase/independent work-item plan execution; conditional split and parallel work; external coding executor delegation (off by default) | `references/task-split-parallel-and-integration.md`; read the plan-execution section first, the rest when triggered | | Actual admitted Grok CLI invocation (executor or reviewer) | `references/grok-cli-dispatch.md`; product names and dispatch text alone do not activate it | -| Direct user-facing Grok Bot delivery of a review report, plan or pending contract | `references/grok-bot-page.md`; other hosts and dispatched sessions have no Page duty | +| Direct user-facing Grok Bot: must-create duty for a review report, plan or pending contract, or this session will generate or update a Page | `references/grok-bot-page.md`; must-create scope stays there. Formatting applies only after that file is actually loaded, to every Page this session generates or updates, and does not make every reply a Page. Other hosts and dispatched sessions do not load it and have no Page duty. Skill activation alone is not a load | | API debugging and `.http` | `references/http-assisted-verification.md`; `references/verification-and-evidence-routing.md` when needed | | Rule candidates, human promotion, active/INDEX/history/rollback (evolution off by default; only when the user explicitly enables it) | `references/rule-evolution.md` | | Explicitly authorized isolated candidate trial (not production adoption) | `references/rule-evolution.md` "Isolated trial authorization and evidence", `references/verification-and-evidence-routing.md`, `templates/general-rule-adoption-review-record.md` | diff --git a/skills/task-lifecycle/references/artifact-content-and-self-review-contract.md b/skills/task-lifecycle/references/artifact-content-and-self-review-contract.md index 3fb38e8..1e25147 100644 --- a/skills/task-lifecycle/references/artifact-content-and-self-review-contract.md +++ b/skills/task-lifecycle/references/artifact-content-and-self-review-contract.md @@ -32,7 +32,8 @@ from this reference's directory**) is a format example only. when the user or an approved plan explicitly requires an independent formal artifact, generate a candidate and perform review/confirmation. 7. Public README/API contains only practical user content, never internal approval records or task process; the user can open/read the real candidate body; if the host cannot open files, give readable content and the real path in chat, inventing no UI. - Formal file delivery follows `verification-and-evidence-routing.md` §10.5; the conditional Grok Bot reading view follows [grok-bot-page.md](grok-bot-page.md). + Formal file delivery follows `verification-and-evidence-routing.md` §10.5; Grok Bot Page must-create duty and formatting both follow [grok-bot-page.md](grok-bot-page.md). + This contract does not require a Page for every reply. A generic Page with no formal Markdown invents no source path or approval SHA. 8. When a field contract applies, check each actual fieldPath for type/domain, required/conditional, default/absent/null/empty, cross-field constraints, success and error, security/compatibility/consumers; with no fields, do not fabricate a database/REST. 9. **ABS-08/AC-107 conditional fact check of technology choices**: when this batch truly needs to add/upgrade a key dependency, change framework, or introduce an important SDK/platform API/host diff --git a/skills/task-lifecycle/references/grok-bot-page.md b/skills/task-lifecycle/references/grok-bot-page.md index d333a3e..9d1b9fc 100644 --- a/skills/task-lifecycle/references/grok-bot-page.md +++ b/skills/task-lifecycle/references/grok-bot-page.md @@ -2,9 +2,17 @@ ## Scope and delivery state -This is the sole owner of Grok Bot Page applicability, lifecycle and layout. Load it only when the actual current host is Grok Bot and the session delivers directly to the user. -A CLI named grok, a quoted host name or a dispatch prompt does not establish this context. Formal Markdown and approval SHA rules remain in +This file is the sole owner of Grok Bot Page must-create duty, lifecycle and formatting. +The duty table and item 5 decide which content must generate or update a Page. +**Formatting applicability** is separate and does not decide that duty. +Load this file only when the actual current host is Grok Bot and the session delivers directly to the user, +and either a must-create row applies or this session will generate or update a Page. +A CLI named grok, a quoted host name or a dispatch prompt does not establish this context. +Another bot, or this Skill merely being active, does not load this file. +Loading it is not global enforcement and does not make every reply a Page. +Formal Markdown and approval SHA rules remain in [verification-and-evidence-routing.md](verification-and-evidence-routing.md) §10.5. A Page is a reading copy, never the approval object. +A generic Page is not a governed reading copy and does not gain a formal source by being formatted. | Current context | Page duty | |---|---| @@ -14,7 +22,22 @@ A CLI named grok, a quoted host name or a dispatch prompt does not establish thi | Ordinary artifacts, casual options, one decision card, CHANGELOG or config notes | No automatic Page | | Contract already finalized in the repository | No new Page; handle any existing draft reading Page under item 4 | -If the Page tool or canvas skill is unavailable, deliver the openable Markdown and record source-delivery=complete and Page-delivery=pending with the actual missing capability. +The duty table is only the must-create list. It does not require a Page for any other reply. +"No automatic Page" still forbids an automatic Page for ordinary artifacts, casual options, one decision card, CHANGELOG or config notes. +An explicit user request for a Page is not automatic and is not a new must-create duty. +Generating or formatting a Page outside item 5 does not by itself create a managed Task or a formal artifact. + +**Formatting applicability**: when this file is actually loaded, every Page this session generates or updates uses the formatting items, +including a Page outside item 5. Those items are 6–10 and 12–14, plus item 4a's language, contents order and conclusion order. +Item 11's openable-Page check applies to every such Page. Its source SHA clause, and item 4a's source line, stay under item 1. +Pages this session does not generate or update are unchanged. +Other hosts, dispatched sessions and any bot that did not load this file do not inherit this formatting. +Content-conditioned items still fire only for matching content. Flow diagrams and tabs are only for actual flow segments. +Comparison tables are only for comparisons. Do not invent a conclusion section when the content has none. +Updating an existing Page reuses that Page ID/URL. Do not create a duplicate merely because the content is outside item 5. + +If the Page tool or canvas skill is unavailable and item 1 applies, deliver the openable Markdown and record source-delivery=complete and Page-delivery=pending with the actual missing capability. +If item 1 does not apply, do not invent Markdown or a source SHA; record Page-delivery=pending with the actual missing capability. Do not invent a Page URL, claim a Page was generated, or dispatch its generation to a CLI. Resume only the Page step when the capability is available. A failed tool call stays failed/pending with its evidence. It does not erase completed Markdown work. Never call the full Page delivery complete until an openable real Page is verified. @@ -22,13 +45,20 @@ A failed tool call stays failed/pending with its evidence. It does not erase com The item numbers below retain stable references from earlier rules. Only this consolidated text is effective; superseded source-line, width and floating-contents layouts are historical. -- Item 1 **Formal source**: the Markdown path and SHA identify content and approval. On disagreement the Markdown prevails. Never invent missing source content in the reading copy. +- Item 1 **Formal source**: applies only to a governed artifact that already has formal Markdown, including item 5 artifacts and any other artifact that already has that source. + The Markdown path and SHA identify content and approval. On disagreement the Markdown prevails. Never invent missing source content in the reading copy. + A generic Page with no formal Markdown gets no invented path, sha256, line count, or approval SHA. + A temporary note, chat reply or non-governed Markdown file is not a formal source. - Item 2 **Session ownership**: the direct user-facing Grok Bot session produces the Page. A dispatched session has no Page duty and its output is not Page-generation evidence. - Item 3 **Host-neutral delivery**: other hosts deliver the formal Markdown under the core delivery rule. No missing-Page failure is inferred for those hosts. -- Item 4 **Stable document identity and Page reuse**: bind one logical Document ID to one current Page ID/URL, independently of changing Markdown filenames and versions. - Keep the mapping in the task record: Document ID, current source path/SHA/line count, Page ID/URL, current title/status, prior versions and last successful synchronization. - For a revision of the same document, update that same Page, its title/status and source SHA. A new filename or version alone does not create a new Page. - If the mapping is missing, first locate the existing Page using current task evidence; if ambiguous, deliver Markdown and mark Page synchronization pending rather than creating a duplicate. +- Item 4 **Stable document identity and Page reuse**: when item 1 applies, bind one logical Document ID to one current Page ID/URL, independently of changing Markdown filenames and versions. + When item 1 applies, keep the mapping in the task record: Document ID, current source path/SHA/line count, Page ID/URL, current title/status, prior versions and last successful synchronization. + With no formal Markdown, do not invent a Document ID, path, sha256, line count or approval SHA; keep any existing Page ID/URL and title, and record source identity as not applicable. + For a revision of the same governed document, update that same Page, its title/status and, when item 1 applies, its source SHA. + A new filename or version alone does not create a new Page. + If the mapping is missing and item 1 applies, first locate the existing Page using current task evidence; + if ambiguous, deliver Markdown and mark Page synchronization pending rather than creating a duplicate. + If item 1 does not apply and the existing Page is ambiguous, mark synchronization pending, invent no Markdown, and do not create a duplicate. When a chapter is moved for reading, the move is made in the .md itself: chapters are renumbered in sequence and cross-references in the .md are updated; the Page follows the .md order and numbering, never shows an out-of-sequence chapter number. Approved bytes remain immutable under the core controlled-revision rules. When a pending contract is finalized, create no new Page. An existing draft Page may update its title/status and link to the finalized Markdown; any retained draft body is clearly historical, @@ -40,22 +70,26 @@ The item numbers below retain stable references from earlier rules. Only this co A Page whose content is Chinese, Japanese or Korean sets the Page `lang` prop (`zh-Hans`, `zh-Hant`, `ja` or `ko`) as declared by the actual canvas kit; the deprecated Page `sources` prop is not used, because it renders nothing. The source line (source .md path, sha256 and line count) is the first line inside the collapsed document-header section, not the Page's top line. + Write that source line only when item 1 applies. A generic Page with no formal Markdown omits it. Effective order: inline top table of contents, then body; metadata lives in the document-header section. In the conclusion section, Metrics come first, then the Callouts; a Callout lead states the conclusion directly and never repeats the section heading. Metrics, leads and Callouts use only facts already in the content. -- Item 5 **Artifact scope**: review reports, technical/implementation/fix/review plans and proposals handed to the user, and contract drafts awaiting approval. Length never changes this scope. +- Item 5 **Must-create scope**: review reports, technical/implementation/fix/review plans and proposals handed to the user, and contract drafts awaiting approval. Length never changes this scope. + Item 5 does not limit **Formatting applicability**, and it does not require every reply to become a Page. - Item 6 **Optional HTML**: follow the core explicit-request-only HTML rule; needing a Page does not imply requesting HTML. - Item 7 **Inline contents**: always place an inline TableOfContents at the top of the body, whatever the length; never a floating, sticky or side contents. Use actual section anchors. Do not add an “↑ Contents” link to each heading or hand-write observers, fixed positioning or pixel calculations. Host-owned surrounding navigation needs no custom imitation. -- Item 8 **Width**: set every Page width to "wide" or "full", never "column"; on desktop the body must not be narrower than 1024px when the available viewport permits it. +- Item 8 **Width**: for every Page generated or updated while this file is loaded, including a Page outside item 5, + set width to "wide" or "full", never "column"; on desktop the body must not be narrower than 1024px when the available viewport permits it. + A session that did not load this file does not inherit this width rule. Phones remain a single column; narrow viewports use available width. Tables and flowcharts use body width. Use kit sizing options, not custom pixel calculations. Public pages.grok.bot links with the platform 960px cap are exempt from the 1024px floor. The cap is a platform limit, not a selected narrow layout. - Item 9 **Public-link limitations**: prior measurements found a content-height iframe scrolled by the outer page; fixed/sticky/IntersectionObserver following did not work. Use only inline top contents and no custom floating elements. Verify the actual current rendering; historical measurements do not prove current-host compatibility. - Item 10 **Pages generated by content (Grok Bot host only)**: Pages do not use a fixed template; choose the presentation best for human reading by content. Details (each with a reason): - - 10a The body's first section is conclusions and pending items (after the top contents), long details collapsed by default. Reason: first answer "what do you need me to do", - details expand on demand. + - 10a When the content already has conclusions or pending items, the body's first section is those items (after the top contents), and long details are collapsed by default. + Do not invent that section when the content has none. Reason: first answer "what do you need me to do", details expand on demand. - 10b The top contents are always kept (item 7); no "↑ Contents" in each section; contents do not grow or shrink with length or section count. Host-owned surrounding navigation retains its defaults; the Page itself adds only inline contents. Reason: contents always usable; no custom floating forms. - 10c Processes use flowcharts whose nodes carry the number + a summary of about 20 characters (over 22 truncated to 20 plus …), immediately followed by a "number—description" table; number-only @@ -68,19 +102,25 @@ The item numbers below retain stable references from earlier rules. Only this co - 10d Comparisons use tables; risks and blocks are marked with color plus a text label. Reason: tables ease side-by-side comparison; color plus text does not rely on color vision. - 10e Table cell letter spacing 0; tables and flowcharts as wide as the body. Reason: better readability in v0.15 practice; an implementation detail. - 10g Layout plan before generating: before generating a Page, first produce a layout plan, then generate. (1) First decide per chapter which confirmed rules apply (items 1–14, - especially 10a–10f and item 12). (2) Within what the rules allow, choose the layout best for human reading given the .md content; only where the rules are silent consult the canvas - skill's defaults; on conflict the rules win. (3) The plan states per chapter which block is used and which rule it rests on, in a few lines in the delivery note, listing each place where - the Page structure differs from the .md. This adds no new confirmation stop point; the plan may not override existing constraints (no omitted content, no invented + especially 10a–10f and item 12). Item 1 and other source or approval metadata apply only when a formal Markdown source already exists. + Formatting items follow **Formatting applicability**. (2) Within what the rules allow, choose the layout best for human reading given the actual content; + when item 1 applies, that content is the .md. Only where the rules are silent consult the canvas skill's defaults; on conflict the rules win. + (3) The plan states per chapter which block is used and which rule it rests on, in a few lines in the delivery note, listing each place where + the Page structure differs from the .md when a formal .md exists. With no formal .md, list no invented source diff. + This adds no new confirmation stop point; the plan may not override existing constraints (no omitted content, no invented names). Reason: layout decided while writing let rule conflicts surface only at generation time. - Criterion: if the same content contains process/comparison/pending items, the Page shows them as 10c/10d/10a respectively (labels per 10f); do not force them in when there is no such content. -- Item 11 **Delivery self-check**: verify the actual Page write/update result, current source SHA and openable Page URL before claiming Page delivery complete. - The user-visible reply links the real Page and the formal source. Apply the context table and missing-tool fallback above; a source-only delivery is explicitly distinguished from +- Item 11 **Delivery self-check**: verify the actual Page write/update result and openable Page URL before claiming Page delivery complete. + Verify the current source SHA only when item 1 applies; never invent one. + The user-visible reply links the real Page and, when item 1 applies, the formal source. + Apply the context table and missing-tool fallback above; a source-only delivery is explicitly distinguished from a complete Page delivery. -- Item 12 **Flow-type Page layout (Grok Bot host only)**: given a Page is to be made per items 1–5 and 11, use this layout if readers want to "walk the gates and look up the next hop and basis"; +- Item 12 **Flow-type Page layout (Grok Bot host only)**: given a Page is generated or updated under **Formatting applicability**, + use this layout if readers want to "walk the gates and look up the next hop and basis"; if readers want to "see conclusions, find issues, approve a draft", do not. - This item governs layout and does not change items 1–5 "whether to make a Page" (layered with the applicability rules above). Item 4's source line and reuse (source line, sha256, - same-page updates) still - apply. + This item governs layout and does not change the duty table or item 5 "whether to make a Page" (layered with the applicability rules above). It applies only to actual flow segments. + Item 4's source line and reuse (source line, sha256, same-page updates) still apply when item 1 applies. + With no formal Markdown, invent neither a source line nor a sha256. - **Applies to**: flow gates, many branches, content to execute against: dispatch/review/re-review main paths, Feature/Bugfix/Docs phase gate overviews, relay or delegation "trigger → steps → stop points", WI diagrams in implementation plans with many dependencies and branches; in mixed plans **only** the gate/branch/execute-against flow segments use this item, other chapters keep their original layout. diff --git a/skills/task-lifecycle/references/verification-and-evidence-routing.md b/skills/task-lifecycle/references/verification-and-evidence-routing.md index 97faaac..9dcfefa 100644 --- a/skills/task-lifecycle/references/verification-and-evidence-routing.md +++ b/skills/task-lifecycle/references/verification-and-evidence-routing.md @@ -230,8 +230,11 @@ Any option card in any turn, managed or not, follows the option-card rule of `co Finalized contracts retain their formal Markdown source; a reading copy never changes approval or supersedes the approved bytes. - Deliver an openable file/attachment under the host capability above. A generated reading view is distinct from source delivery and has its own actual success/failure evidence. - **Single-file HTML on demand**: generate self-contained HTML only when the user explicitly asks, on every host; never infer this request from document length or Page availability. - - **Conditional reading Page**: for an actual user-facing Grok Bot session delivering a report-type artifact, load [grok-bot-page.md](grok-bot-page.md) for scope, identity, layout and fallback. - Page rules do not apply to other hosts or dispatched sessions. That adapter is the only owner of Page-specific requirements. + - **Conditional reading Page**: on an actual user-facing Grok Bot session, load [grok-bot-page.md](grok-bot-page.md) + when delivering a report, plan/proposal or contract draft awaiting approval, and when this session will generate or update any Page while this Skill is active. + That file owns must-create duty and formatting separately. Formatting applies to every Page generated or updated only after that file is actually loaded, and does not turn every reply into a Page. + Other hosts and dispatched sessions do not load it and have no Page duty. That adapter is the only owner of Page-specific requirements. + A generic Page does not invent a formal Markdown path or approval SHA. Those rules stay in **Formal source and delivery** and apply only to governed artifacts. - The next step does not mean imposing optimization suggestions every round, repeatedly asking whether to continue, treating suggestions as authorization, or manufacturing new tasks for the tail; it only constrains enabled managed tasks. From 6228b26a814aafbcfed6143b04611936bea5d3fe Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sun, 8 Nov 2026 04:24:21 +0000 Subject: [PATCH 2/2] docs: save model selection and apply controllable Markdown width Keep explicit latest-Grok selection for Cursor and cloud coding launches. Apply the width floor to every controllable Markdown render, not only Pages. Renumber the colliding regression tests and correct the outdated contents note. Record this repository's main-branch preference without overriding host PR rules. Co-authored-by: rocky --- docs/known-gaps.md | 9 +- docs/maintainer-baseline.md | 7 ++ scripts/maintenance-regression.test.mjs | 95 +++++++++++++++++-- skills/task-lifecycle/SKILL.md | 5 +- ...tifact-content-and-self-review-contract.md | 1 + .../references/entry-quickref.md | 6 ++ .../references/grok-bot-page.md | 15 +-- .../references/grok-cli-dispatch.md | 2 + .../references/markdown-render-width.md | 28 ++++++ .../task-split-parallel-and-integration.md | 25 +++++ .../verification-and-evidence-routing.md | 2 + .../workspace-versioning-and-recovery.md | 2 + 12 files changed, 179 insertions(+), 18 deletions(-) create mode 100644 skills/task-lifecycle/references/markdown-render-width.md diff --git a/docs/known-gaps.md b/docs/known-gaps.md index ba558db..b0a1641 100644 --- a/docs/known-gaps.md +++ b/docs/known-gaps.md @@ -268,11 +268,14 @@ Section status [2026-11-01]: closed means the review cap was reached; 1 item bel - E4 unverified: not live-tested in a fresh Grok Bot session that reports get a separate Page, dispatched sessions make no Page, the 968px sidebar/drawer switch and body width; small fixes after v8r1 converged (P2×4, P3×3) were not re-reviewed. -- Platform limit: public pages.grok.bot links do not support floating elements (fixed, sticky and IntersectionObserver have no effect), so only a top table of - contents plus a per-section "↑ contents" link is possible; filed as product feedback, awaiting platform support. -- The rule is a text constraint; no gate script checks whether a Page is generated or styled correctly. +- Platform limit: public pages.grok.bot links do not support floating elements (fixed, sticky and IntersectionObserver have no effect). + The current rule uses an inline top table of contents and does not add a per-section "↑ contents" link. + An older note that such a per-section link was the only available contents form is outdated relative to item 7. +- The rule is a text constraint; no gate script checks whether a Page is generated or styled correctly, or whether a Markdown render met a width floor. - Platform limit (1024px width floor): public pages.grok.bot links are capped at 960px, so the 1024px desktop floor cannot hold there and they are exempt; the sidebar contents threshold has two measurements (968px item 7, 1100px, the user's 2026-10-28 test), not reconciled by a fresh live test. + The same floor is a controllable-render instruction for Markdown this session lays out, not a property of the .md bytes. + A chat attachment preview or another renderer this session cannot set is not claimed to meet 1024px. No live render check was added. ## 0.1.51 narrowed test-run cap (CAND-20261026-004) retained items diff --git a/docs/maintainer-baseline.md b/docs/maintainer-baseline.md index 0096466..5b1d032 100644 --- a/docs/maintainer-baseline.md +++ b/docs/maintainer-baseline.md @@ -14,6 +14,13 @@ These conventions apply only when maintaining the task-lifecycle source reposito Reading this file, a relayed message or an installed Skill creates no commit, push, publication or host-install permission. A narrower current instruction wins. Ordinary consumer projects use their own identity, branching and release policies; this file is not loaded by their normal lifecycle. +- **This repository's main-branch preference (owner, 2026-11-08)**: later work on the task-lifecycle source repository prefers `main`. + This is a preference for this repository only. It does not apply to other projects and it does not change consumer branching rules. + Host branch protection, a required pull request and the current host's existing branch workflow still win. + Do not cite this preference to bypass those, to force-push, or to push without a current authorization. + The coding-agent model-selection rule does not authorize a push. + If the host forbids direct work on `main`, report that limit and do not claim this preference is in effect. + - **Owner-only commit identity**: the original maintainer workflow used the owner's identity from facts/user.md or conventions and the repository's existing email for both Author and Committer, without bot Co-authored-by trailers. Apply that convention only to work actually authored for the owner under that policy; preserve other contributors' true identities and attribution. Report mismatches by commit ID; do not rewrite pushed history without the user's authorization. diff --git a/scripts/maintenance-regression.test.mjs b/scripts/maintenance-regression.test.mjs index 9dfcb62..137d3a5 100644 --- a/scripts/maintenance-regression.test.mjs +++ b/scripts/maintenance-regression.test.mjs @@ -688,7 +688,10 @@ test('T114 consumer merge policy is project-owned; owner squash convention remai }); test('T115 Page width floor override 1024px, public-link exemption',()=>{ const v=fs.readFileSync(path.join(root,'skills/task-lifecycle/references/grok-bot-page.md'),'utf8').replace(/\s+/g,' '); - for(const x of ['**Width**','never "column"; on desktop the body must not be narrower than 1024px','exempt from the 1024px floor','narrow viewports use available width'])assert.ok(v.includes(x),x); + const w=fs.readFileSync(path.join(root,'skills/task-lifecycle/references/markdown-render-width.md'),'utf8').replace(/\s+/g,' '); + assert.ok(v.includes('**Width**')&&v.includes('uses width "wide" or "full", never "column"')); + assert.ok(v.includes('markdown-render-width.md')&&!v.includes('does not inherit this width rule')); + for(const x of ['must not be narrower than 1024px','exempt from the 1024px floor','Narrow viewports use available width'])assert.ok(w.includes(x),x); }); test('T116 immediate absorption is scoped to the maintainer; an ordinary rule edit grants no external action',()=>{ const f=rdN(REF+'formal-review-and-findings.md'); @@ -1092,7 +1095,7 @@ test('T146 role review reuses evidence before dispatch and invalidates by affect 'Human-only performer choices stay human-only', 'never enables external delegation']) assert.ok(rule.includes(text), text); }); -test('T148 Page formatting applies to every loaded-rule Page; must-create scope stays narrow',()=>{ +test('T150 Page formatting applies to every loaded-rule Page; must-create scope stays narrow',()=>{ const page=fs.readFileSync(path.join(root,'skills/task-lifecycle/references/grok-bot-page.md'),'utf8').replace(/\s+/g,' '); const skill=fs.readFileSync(path.join(root,'skills/task-lifecycle/SKILL.md'),'utf8').replace(/\s+/g,' '); const route=fs.readFileSync(path.join(root,'skills/task-lifecycle/references/verification-and-evidence-routing.md'),'utf8').replace(/\s+/g,' '); @@ -1107,10 +1110,9 @@ test('T148 Page formatting applies to every loaded-rule Page; must-create scope 'not global enforcement', 'this Skill merely being active, does not load this file', 'A generic Page with no formal Markdown gets no invented path, sha256, line count, or approval SHA', - 'for every Page generated or updated while this file is loaded, including a Page outside item 5, set width to "wide" or "full", never "column"', - 'exempt from the 1024px floor', - 'narrow viewports use available width', - '960px cap', + 'a Page whose layout this session sets uses width "wide" or "full", never "column"', + 'markdown-render-width.md', + 'reading the width file does not load the rest of this Page file', 'only** the gate/branch/execute-against flow segments', 'Do not invent that section when the content has none', 'does not by itself create a managed Task or a formal artifact', @@ -1136,3 +1138,84 @@ test('T148 Page formatting applies to every loaded-rule Page; must-create scope assert.ok(art.includes('does not require a Page for every reply')); assert.ok(art.includes('invents no source path or approval SHA')); }); +test('T151 Cursor/cloud coding launch selects latest Grok by explicit id; no Auto and no new admission',()=>{ + const t=rdN(REF+'task-split-parallel-and-integration.md'); + const i=t.indexOf('## Coding-agent model selection'); + assert.ok(i>t.indexOf('## Host-native parallel config (parallel)'),'model section follows parallel config'); + const sec=t.slice(i); + for(const x of [ + 'owns model selection only for a Cursor cloud coding agent, or a host-native coding sub-agent on Cursor, whose launch surface accepts an explicit model id', + 'does not admit the launch', + 'receiver gate', + 'admitted-executor rules', + 'actual-config validation', + 'Tools and CLIs that cannot select a model are outside this section', + 'Item 10\'s omitted `model` (do not append the flag; record host default) stays for those callers', + 'An explicit model id from the real user for this launch takes precedence', + 'query the host\'s current available-model catalog', + 'latest available Grok', + 'concrete model id', + 'Do not pass Auto or default, and do not omit the model so the host selects automatically', + 'This rule names no permanent model id', + 'No silent fallback to Auto, to an omitted model, or to another vendor', + 'A continuation passes the explicit id already chosen for that agent', + 'Do not set reasoning effort, context size or a fast variant unless the real user requested that setting', + 'A host refusal wins', + ])assert.ok(sec.includes(x),x); + assert.doesNotMatch(sec,/grok-4\.7|permanent default is grok/); + assert.ok(t.includes('omitted means not appended')); + assert.ok(t.includes('This omitted-model behavior is only for a caller that cannot set a model id')); + const skill=rdN('skills/task-lifecycle/SKILL.md'); + assert.ok(skill.includes('A Cursor or cloud coding launch that can set a model id also reads "Coding-agent model selection"')); + assert.ok(skill.includes('that section does not admit the launch')); + const q=rdN(REF+'entry-quickref.md'); + assert.ok(q.includes('re-read "Coding-agent model selection" in `task-split-parallel-and-integration.md`')); + assert.ok(q.includes('That section selects a model only; it does not admit the launch.')); + const g=rdN(REF+'grok-cli-dispatch.md'); + assert.ok(g.includes('Selecting a model for a Cursor or cloud coding launch that accepts a model id is outside this adapter')); + assert.ok(g.includes('Recording model and effort below does not choose effort, context size or a fast variant')); + assert.ok(g.includes('A reviewer remains read-only')); +}); +test('T152 controllable Markdown width stays separate from Page duty and uncontrolled renderers',()=>{ + const w=rdN(REF+'markdown-render-width.md').replace(/\s+/g,' '); + for(const x of [ + 'sole owner of controllable rendered width', + 'does not load that Page file, does not create a Page and does not apply Page items', + 'project analysis and any other Markdown', + 'does not itself have a pixel width', + 'Do not insert HTML or CSS into a `.md` file to force a width', + 'must not be narrower than 1024px when the available viewport permits it', + 'Narrow viewports use available width', + '960px cap are exempt from the 1024px floor', + 'host chat attachment preview', + 'Do not claim that preview or renderer meets 1024px', + 'does not prove the floor was rendered', + 'does not add a confirmation stop', + 'does not authorize a commit, a push or a release', + ])assert.ok(w.includes(x),x); + const skill=rdN('skills/task-lifecycle/SKILL.md'); + assert.ok(skill.includes('Generating or updating Markdown whose rendered layout this session can control')); + assert.ok(skill.includes('does not load `references/grok-bot-page.md`')); + const q=rdN(REF+'entry-quickref.md'); + assert.ok(q.includes('re-read `markdown-render-width.md`')); + assert.ok(q.includes('It does not load Page rules and does not create a Page.')); + assert.ok(q.includes('main-branch preference for this repository only')); + assert.ok(q.includes('That preference authorizes no push')); + const route=rdN(REF+'verification-and-evidence-routing.md'); + assert.ok(route.includes('markdown-render-width.md')&&route.includes('does not create a Page')); + assert.doesNotMatch(route,/1024px/); + const gaps=rdN('docs/known-gaps.md'); + assert.ok(gaps.includes('does not add a per-section "\u2191 contents" link')); + assert.ok(gaps.includes('outdated relative to item 7')); + assert.equal(gaps.includes('per-section "\u2191 contents" link is possible'),false); + const base=rdN('docs/maintainer-baseline.md'); + assert.ok(base.includes("This repository's main-branch preference")); + assert.ok(base.includes('does not apply to other projects')); + assert.ok(base.includes('The coding-agent model-selection rule does not authorize a push.')); + assert.ok(base.includes('do not claim this preference is in effect')); + const maint=fs.readFileSync(path.join(root,'scripts/maintenance-regression.test.mjs'),'utf8'); + const ids=[...maint.matchAll(/^test\('T(\d+)/gm)].map(m=>m[1]); + assert.equal(ids.filter(x=>x==='148').length,0); + assert.equal(ids.filter(x=>x==='149').length,0); + for(const n of ['150','151','152'])assert.equal(ids.filter(x=>x===n).length,1,n); +}); diff --git a/skills/task-lifecycle/SKILL.md b/skills/task-lifecycle/SKILL.md index 4c11009..50e0b75 100644 --- a/skills/task-lifecycle/SKILL.md +++ b/skills/task-lifecycle/SKILL.md @@ -170,9 +170,10 @@ other phases reference it rather than redefining a looser version. | Full delivery set of a real commit/package/release candidate (ABS-07) | `references/verification-and-evidence-routing.md`, `references/workspace-versioning-and-recovery.md` | | New choice or upgrade of key dependency/framework/platform API (ABS-08, conditional) | `references/artifact-content-and-self-review-contract.md`, and `references/verification-and-evidence-routing.md` when evidence is needed | | Specialist Skill missing, discovery, primary/secondary choice | `references/skill-discovery-matching-and-degradation.md`, `references/roles-and-specialist-review.md` | -| Per-phase/independent work-item plan execution; conditional split and parallel work; external coding executor delegation (off by default) | `references/task-split-parallel-and-integration.md`; read the plan-execution section first, the rest when triggered | +| Per-phase/independent work-item plan execution; conditional split and parallel work; external coding executor delegation (off by default) | `references/task-split-parallel-and-integration.md`; read the plan-execution section first, the rest when triggered. A Cursor or cloud coding launch that can set a model id also reads "Coding-agent model selection" there; that section does not admit the launch | | Actual admitted Grok CLI invocation (executor or reviewer) | `references/grok-cli-dispatch.md`; product names and dispatch text alone do not activate it | -| Direct user-facing Grok Bot: must-create duty for a review report, plan or pending contract, or this session will generate or update a Page | `references/grok-bot-page.md`; must-create scope stays there. Formatting applies only after that file is actually loaded, to every Page this session generates or updates, and does not make every reply a Page. Other hosts and dispatched sessions do not load it and have no Page duty. Skill activation alone is not a load | +| Generating or updating Markdown whose rendered layout this session can control, including a project analysis | `references/markdown-render-width.md`. Controllable render width only. It does not require a Page, does not load `references/grok-bot-page.md`, and does not apply Page lifecycle or formatting. A renderer this session cannot control is a stated limit, not a passed width render | +| Direct user-facing Grok Bot: must-create duty for a review report, plan or pending contract, or this session will generate or update a Page | `references/grok-bot-page.md`; must-create scope stays there. Formatting applies only after that file is actually loaded, to every Page this session generates or updates, and does not make every reply a Page. Other hosts and dispatched sessions do not load it and have no Page duty. Skill activation alone is not a load. Controllable render width stays in `references/markdown-render-width.md` and does not require loading this Page file | | API debugging and `.http` | `references/http-assisted-verification.md`; `references/verification-and-evidence-routing.md` when needed | | Rule candidates, human promotion, active/INDEX/history/rollback (evolution off by default; only when the user explicitly enables it) | `references/rule-evolution.md` | | Explicitly authorized isolated candidate trial (not production adoption) | `references/rule-evolution.md` "Isolated trial authorization and evidence", `references/verification-and-evidence-routing.md`, `templates/general-rule-adoption-review-record.md` | diff --git a/skills/task-lifecycle/references/artifact-content-and-self-review-contract.md b/skills/task-lifecycle/references/artifact-content-and-self-review-contract.md index 1e25147..19cb90b 100644 --- a/skills/task-lifecycle/references/artifact-content-and-self-review-contract.md +++ b/skills/task-lifecycle/references/artifact-content-and-self-review-contract.md @@ -34,6 +34,7 @@ from this reference's directory**) is a format example only. readable content and the real path in chat, inventing no UI. Formal file delivery follows `verification-and-evidence-routing.md` §10.5; Grok Bot Page must-create duty and formatting both follow [grok-bot-page.md](grok-bot-page.md). This contract does not require a Page for every reply. A generic Page with no formal Markdown invents no source path or approval SHA. + Controllable Markdown render width follows [markdown-render-width.md](markdown-render-width.md) and does not by itself require a Page. 8. When a field contract applies, check each actual fieldPath for type/domain, required/conditional, default/absent/null/empty, cross-field constraints, success and error, security/compatibility/consumers; with no fields, do not fabricate a database/REST. 9. **ABS-08/AC-107 conditional fact check of technology choices**: when this batch truly needs to add/upgrade a key dependency, change framework, or introduce an important SDK/platform API/host diff --git a/skills/task-lifecycle/references/entry-quickref.md b/skills/task-lifecycle/references/entry-quickref.md index 8257e94..6b3de3a 100644 --- a/skills/task-lifecycle/references/entry-quickref.md +++ b/skills/task-lifecycle/references/entry-quickref.md @@ -30,6 +30,12 @@ dispatching to an external coding executor → re-read "External coding executor deterministic tier closes locally with zero delegation). Additive (FEAT-20261028-001): Auto form (ii), the end-to-end Auto card → re-read `end-to-end-auto-card.md`; host-native `parallel` config → re-read "Host-native parallel config (parallel)" at the end of `task-split-parallel-and-integration.md`; review intensity → re-read "Review intensity" in `task-recognition-and-routing.md`. +A Cursor or cloud coding launch that can set a model id → re-read "Coding-agent model selection" in `task-split-parallel-and-integration.md`. +That section selects a model only; it does not admit the launch. +Generating or updating Markdown whose rendered layout this session can control, including a project analysis → re-read `markdown-render-width.md`. +That file sets width only. It does not load Page rules and does not create a Page. +Maintaining this plugin source repository → `docs/maintainer-baseline.md` records a main-branch preference for this repository only. +Host branch protection and a required pull request still win. That preference authorizes no push, and the model-selection rule authorizes none either. **Order and completion**: before the pre-check only a bounded bootstrap of required rules/versions/identity and config results is allowed; no early project traversal, writes or dispatch; still show the original 4/7 items, and each later config consumption reruns fresh. diff --git a/skills/task-lifecycle/references/grok-bot-page.md b/skills/task-lifecycle/references/grok-bot-page.md index 9d1b9fc..a42b29f 100644 --- a/skills/task-lifecycle/references/grok-bot-page.md +++ b/skills/task-lifecycle/references/grok-bot-page.md @@ -2,7 +2,8 @@ ## Scope and delivery state -This file is the sole owner of Grok Bot Page must-create duty, lifecycle and formatting. +This file is the sole owner of Grok Bot Page must-create duty, lifecycle and Page formatting other than controllable render width. +Controllable render width is owned by [markdown-render-width.md](markdown-render-width.md). The duty table and item 5 decide which content must generate or update a Page. **Formatting applicability** is separate and does not decide that duty. Load this file only when the actual current host is Grok Bot and the session delivers directly to the user, @@ -31,7 +32,8 @@ Generating or formatting a Page outside item 5 does not by itself create a manag including a Page outside item 5. Those items are 6–10 and 12–14, plus item 4a's language, contents order and conclusion order. Item 11's openable-Page check applies to every such Page. Its source SHA clause, and item 4a's source line, stay under item 1. Pages this session does not generate or update are unchanged. -Other hosts, dispatched sessions and any bot that did not load this file do not inherit this formatting. +Other hosts, dispatched sessions and any bot that did not load this file do not inherit this Page formatting. +Controllable render width is outside that limit and follows [markdown-render-width.md](markdown-render-width.md) when that file applies. Content-conditioned items still fire only for matching content. Flow diagrams and tabs are only for actual flow segments. Comparison tables are only for comparisons. Do not invent a conclusion section when the content has none. Updating an existing Page reuses that Page ID/URL. Do not create a duplicate merely because the content is outside item 5. @@ -80,11 +82,10 @@ The item numbers below retain stable references from earlier rules. Only this co - Item 7 **Inline contents**: always place an inline TableOfContents at the top of the body, whatever the length; never a floating, sticky or side contents. Use actual section anchors. Do not add an “↑ Contents” link to each heading or hand-write observers, fixed positioning or pixel calculations. Host-owned surrounding navigation needs no custom imitation. -- Item 8 **Width**: for every Page generated or updated while this file is loaded, including a Page outside item 5, - set width to "wide" or "full", never "column"; on desktop the body must not be narrower than 1024px when the available viewport permits it. - A session that did not load this file does not inherit this width rule. - Phones remain a single column; narrow viewports use available width. Tables and flowcharts use body width. Use kit sizing options, not custom pixel calculations. - Public pages.grok.bot links with the platform 960px cap are exempt from the 1024px floor. The cap is a platform limit, not a selected narrow layout. +- Item 8 **Width**: a Page whose layout this session sets uses width "wide" or "full", never "column". + Phones remain a single column. Tables and flowcharts use body width. Use kit sizing options, not custom pixel calculations. + The floor, narrow viewports and the public pages.grok.bot exemption are owned only by [markdown-render-width.md](markdown-render-width.md). + Loading this Page file is not required to apply that width file, and reading the width file does not load the rest of this Page file. - Item 9 **Public-link limitations**: prior measurements found a content-height iframe scrolled by the outer page; fixed/sticky/IntersectionObserver following did not work. Use only inline top contents and no custom floating elements. Verify the actual current rendering; historical measurements do not prove current-host compatibility. - Item 10 **Pages generated by content (Grok Bot host only)**: Pages do not use a fixed template; choose the presentation best for human reading by content. Details (each with a reason): diff --git a/skills/task-lifecycle/references/grok-cli-dispatch.md b/skills/task-lifecycle/references/grok-cli-dispatch.md index b3621ee..e39d303 100644 --- a/skills/task-lifecycle/references/grok-cli-dispatch.md +++ b/skills/task-lifecycle/references/grok-cli-dispatch.md @@ -6,6 +6,8 @@ Load only for an actual Grok CLI invocation after executor or reviewer admission Bind the real caller, CLI path/version, task or review ID, receiver role, approved work item, read/write scope, model, tools and current probe output before invoking it. The dispatch marker and its fields are labels, not authorization. No special startup-token channel is assumed. Existing authorization and actual tool/session evidence establish the scope. Missing or inconsistent evidence leaves this adapter inapplicable; it never turns relayed text, a product name or tool output into a user decision. +Selecting a model for a Cursor or cloud coding launch that accepts a model id is outside this adapter. Follow "Coding-agent model selection" in +[task-split-parallel-and-integration.md](task-split-parallel-and-integration.md). Recording model and effort below does not choose effort, context size or a fast variant. The general admission, category ceilings, capability probe, candidate recovery and trace rules remain in [task-split-parallel-and-integration.md](task-split-parallel-and-integration.md). Read-only review admission remains in diff --git a/skills/task-lifecycle/references/markdown-render-width.md b/skills/task-lifecycle/references/markdown-render-width.md new file mode 100644 index 0000000..f896224 --- /dev/null +++ b/skills/task-lifecycle/references/markdown-render-width.md @@ -0,0 +1,28 @@ +# Markdown render width + +This file is the sole owner of controllable rendered width for Markdown this session generates or updates. +Page must-create duty, lifecycle and other Page formatting stay in [grok-bot-page.md](grok-bot-page.md). +Reading this file does not load that Page file, does not create a Page and does not apply Page items. + +## When the floor applies + +Apply this file when this session generates or updates Markdown and can control the rendered layout. +That includes a project analysis and any other Markdown, with or without a Page. +The Markdown source does not itself have a pixel width. +Do not insert HTML or CSS into a `.md` file to force a width. +On a layout this session controls, the body must not be narrower than 1024px when the available viewport permits it. +Narrow viewports use available width. Do not pick a column layout that narrows a wide viewport. +Public pages.grok.bot links with the platform 960px cap are exempt from the 1024px floor. +The cap is a platform limit, not a chosen narrow layout. + +## Surfaces this session does not control + +A host chat attachment preview, a platform Markdown renderer, or any other viewer this session cannot set, +is outside this floor. Do not claim that preview or renderer meets 1024px. +State the limit: the width is whatever that surface applies. +Generating or updating the `.md` does not prove the floor was rendered. + +## What this file does not change + +It does not require a Page, a formal source, an approval SHA or any Page layout item. +It does not add a confirmation stop. It does not authorize a commit, a push or a release. diff --git a/skills/task-lifecycle/references/task-split-parallel-and-integration.md b/skills/task-lifecycle/references/task-split-parallel-and-integration.md index a8d21a9..c4606db 100644 --- a/skills/task-lifecycle/references/task-split-parallel-and-integration.md +++ b/skills/task-lifecycle/references/task-split-parallel-and-integration.md @@ -183,6 +183,8 @@ node -e "const r=require('node:child_process').spawnSync(process.execPath,proces repeated identical values are not a conflict, but the value must still be compared with config, and a mismatch is recorded `config-mismatch` as usual. - Omitted fields (effective `null`) are not compared and record no code, only the actual value and source "host default"; when that log header line is missing, truncated or unreadable record the actual value as "not obtained". + - This omitted-model behavior is only for a caller that cannot set a model id. A Cursor or cloud coding launch that can set one follows + "Coding-agent model selection" and does not silently use Auto, default or an omitted model. - A non-codex host configured with `model` / `reasoningEffort` whose support the capability probe has not proven → `executor-unavailable`, never silently ignored. - These three codes and `review-sandbox-tier-unnamed` apply only to this host's call, do not turn off the config and do not affect other hosts or categories; reviewer hosts degrade per §7.10 item 6 or fill in `hosts` order; coding executors degrade to main-session execution per item 3 of the next section, without reassigning to another executor @@ -431,3 +433,26 @@ Added by FEAT-20261028-001 (D4, D5, D9, D18–D21, D26, D31, D32; R-2). Additive | Same repo, disjoint files | `parallel-eligible` (conditional) | Touches none of the §11.1 shared resources; §11.1 conditions met; commits by the main task only, with that time's authorization or the end-to-end Auto card's local-commit pre-authorization; a batch confirmation grants no commit | | Same file or shared interface | `serial-required` | §11.1 shared-resource rule | | Never-delegate list ("External coding executor delegation") | not dispatched (not one of the four states) | The A03 dependency and source-structure check may still run as a read-only investigation | + +## Coding-agent model selection + +This section owns model selection only for a Cursor cloud coding agent, or a host-native coding sub-agent on Cursor, whose launch surface accepts an explicit model id. +It applies to that launch and to each continuation of the same agent. It does not admit the launch, enable external delegation, recursive delegation, Task Lifecycle Auto, push or release. +Existing delegation gates, the receiver gate, admitted-executor rules, actual-config validation and host policy still decide whether any launch is allowed. +A host refusal wins; record it and do not bypass it. +Tools and CLIs that cannot select a model are outside this section. Item 10's omitted `model` (do not append the flag; record host default) stays for those callers. + +When this section applies: +- An explicit model id from the real user for this launch takes precedence. Pass that id unchanged. +- Otherwise query the host's current available-model catalog for this launch. Select the latest available Grok and pass that concrete model id. + Do not pass Auto or default, and do not omit the model so the host selects automatically. +- Determine latest only from ordering or version identity the catalog itself exposes. This rule names no permanent model id. + Do not reuse an example, a memory or an older catalog. +- If the catalog lists no Grok, the query fails, or latest cannot be told reliably, do not launch on a guessed id. + Report the catalog evidence and ask the user. No silent fallback to Auto, to an omitted model, or to another vendor. +- A continuation passes the explicit id already chosen for that agent. Do not drop it, and do not let the continuation fall back to automatic selection. + Re-query only for a new launch, or when the real user asks to refresh the catalog. +- Do not set reasoning effort, context size or a fast variant unless the real user requested that setting for this launch. Leave those selectors unset. +- If the host itself mandates a model, or forbids setting one, follow the host and record that fact. Do not override the host, and do not omit the model to reach automatic selection. + +Item 10 of "Delegation config" does not override this section for a launch this section covers. diff --git a/skills/task-lifecycle/references/verification-and-evidence-routing.md b/skills/task-lifecycle/references/verification-and-evidence-routing.md index 9dcfefa..27004b7 100644 --- a/skills/task-lifecycle/references/verification-and-evidence-routing.md +++ b/skills/task-lifecycle/references/verification-and-evidence-routing.md @@ -234,6 +234,8 @@ Any option card in any turn, managed or not, follows the option-card rule of `co when delivering a report, plan/proposal or contract draft awaiting approval, and when this session will generate or update any Page while this Skill is active. That file owns must-create duty and formatting separately. Formatting applies to every Page generated or updated only after that file is actually loaded, and does not turn every reply into a Page. Other hosts and dispatched sessions do not load it and have no Page duty. That adapter is the only owner of Page-specific requirements. + Controllable rendered width of Markdown this session generates or updates is owned by [markdown-render-width.md](markdown-render-width.md). + Loading that file does not load this Page adapter and does not create a Page. A generic Page does not invent a formal Markdown path or approval SHA. Those rules stay in **Formal source and delivery** and apply only to governed artifacts. - The next step does not mean imposing optimization suggestions every round, repeatedly asking whether to continue, treating suggestions as authorization, or manufacturing new tasks for the tail; it only constrains enabled managed tasks. diff --git a/skills/task-lifecycle/references/workspace-versioning-and-recovery.md b/skills/task-lifecycle/references/workspace-versioning-and-recovery.md index 1762d57..73105ca 100644 --- a/skills/task-lifecycle/references/workspace-versioning-and-recovery.md +++ b/skills/task-lifecycle/references/workspace-versioning-and-recovery.md @@ -45,6 +45,8 @@ check. existing commits. Do not rewrite contributors to a plugin maintainer or remove attribution just because this Skill is active. A project-specific policy mismatch is reported with the affected commit IDs; rewriting history needs its own valid scope. This plugin's owner-only convention is in [Maintainer baseline](../../../docs/maintainer-baseline.md#repository-maintenance-policy), not a default for installed users. + For this plugin source repository only, that baseline records the owner's preference to do later work on `main`. + It does not apply to other projects, does not override host branch protection or a required pull request, and does not authorize a push. **Safe recovery of long-task batches**: if task-level Auto is forced to stop at a host/context capacity boundary, and only when real files are verified legally writable, record this round's completed `BatchID/source-set hash/actual target version SHA/sub-condition sign-off results and evidence/block reasons/next batch ID/real trusted permission scope` in the existing external Task