@maestria/opencode 0.7.11 → 0.7.13
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 +6 -1
- package/agents/adventurer.md +1 -1
- package/agents/builder.md +1 -1
- package/agents/orchestrator.md +22 -14
- package/agents/planner.md +1 -1
- package/agents/reviewer.md +6 -1
- package/dist/index.js +3 -2
- package/package.json +2 -1
- package/rules/AGENTS.md +28 -5
package/README.md
CHANGED
|
@@ -18,10 +18,15 @@ OpenCode does not auto-update plugins; re-run the install command with `--force`
|
|
|
18
18
|
|
|
19
19
|
## What It Provides
|
|
20
20
|
|
|
21
|
-
- **8 agents
|
|
21
|
+
- **Agents** (8 as of 2026-09-22; see the [package directory](https://github.com/agustinusnathaniel/maestria/blob/main/packages/opencode/agents) for the current list) - `@orchestrator` (delegates to the 7 specialists) plus `@adventurer`, `@architect`, `@builder`, `@diagnose`, `@planner`, `@reviewer`, and `@writer`.
|
|
22
22
|
- **Global rules** - shared requirements injected into every session for evidence, safety, delegation, review, and bounded repair.
|
|
23
|
+
- **Project customization** - when the project root contains `.maestria/workflow.md` or `.maestria/rules.md`, the full content of each file that exists is injected fresh on every model call in deterministic order (workflow first, then rules). Projects without these files see no behavior change.
|
|
23
24
|
- **Zero plugin telemetry** - the plugin makes no network calls of its own.
|
|
24
25
|
|
|
26
|
+
## Project Customization Details
|
|
27
|
+
|
|
28
|
+
The project root resolves from the SDK project worktree, then the worktree path, then the session directory; a `/` sentinel is skipped so a non-git open directory still resolves. Only the project root is read; no nested or ancestor lookup applies. Files are read fresh on every model call through `experimental.chat.system.transform`, so edits apply on the next call with no restart and no stale snapshot. The same pipeline covers primary and subagent calls, including calls after compaction; a compaction note also asks the summary to preserve active project constraints. This path is separate from `config.instructions`: the pinned host file loader swallows read failures to empty and plugin init/config errors are swallowed, while a transform error here propagates as a failed model call instead of running with silently absent config (verified against pinned host v1.18.31 by source inspection plus package tests, no live model run). A project file that exists but cannot be used (directory, special file, unreadable, unresolvable, or a link resolving outside the root) fails the call loudly instead of being skipped. Diagnostics name only the relative file and the failure kind; symlink targets are canonicalized against the root and the resolved target must be a regular file. Checks observe the filesystem at call time and are not an atomic snapshot. Loaded project guidance stays subordinate: it may replace configurable workflows but never waives safety, authorization, or host permissions.
|
|
29
|
+
|
|
25
30
|
## Support / Platform Notes
|
|
26
31
|
|
|
27
32
|
- OpenCode-specific; Kimi Code, Hermes, Cursor, and other adaptations ship as separate `@maestria` packages.
|
package/agents/adventurer.md
CHANGED
|
@@ -110,7 +110,7 @@ Your report should let the next agent start work immediately without re-explorin
|
|
|
110
110
|
- What was NOT found (negative findings save downstream time)
|
|
111
111
|
- What the downstream specialist should focus on first
|
|
112
112
|
|
|
113
|
-
**If
|
|
113
|
+
**If scoping is unclear or the request is ambiguous, make the best call, document that scope assumption with rationale in the report, and proceed without asking for clarification.**
|
|
114
114
|
|
|
115
115
|
## Rules
|
|
116
116
|
|
package/agents/builder.md
CHANGED
|
@@ -80,7 +80,7 @@ Prefer deny by default, keep secrets in the trusted runtime, and fail closed on
|
|
|
80
80
|
|
|
81
81
|
When superseding code, mark the old path as do-not-extend, keep it until migration completes, then remove it in an isolated change.
|
|
82
82
|
|
|
83
|
-
Never hand-edit generated outputs;
|
|
83
|
+
Never hand-edit generated outputs; edit the authoritative source and regenerate per the canonical source invariant.
|
|
84
84
|
|
|
85
85
|
## Skills
|
|
86
86
|
|
package/agents/orchestrator.md
CHANGED
|
@@ -78,7 +78,9 @@ Approve when acceptance evidence is complete and no blocking/material finding re
|
|
|
78
78
|
|
|
79
79
|
## Workflow and Delegation
|
|
80
80
|
|
|
81
|
-
When
|
|
81
|
+
When the host has not already supplied them, load project-root `.maestria/workflow.md` then `.maestria/rules.md` using host tools (root only). Absence is normal; an unreadable file is surfaced and its content requested rather than silently overridden. Treat both as subordinate guidance under global safety and host authorization. Briefs contain only the material needed to act - goal, constraints, acceptance evidence, termination condition - and restate binding user constraints so they survive the hop. Carry required documentation per the global documentation and changesets contract. Fan out only independent, non-overlapping work and integrate all results before review. If the user rejects an approach twice, stop and re-evaluate. Keep assumptions, evidence, and findings separate; re-plan when the outcome or its evidence changes, not merely because activity stalled.
|
|
82
|
+
|
|
83
|
+
Load the available `spec-contract` skill only when persistent intent across steps would reduce risk; absence is normal.
|
|
82
84
|
|
|
83
85
|
## Mode Precedence
|
|
84
86
|
|
|
@@ -94,23 +96,29 @@ Modes are case-insensitive and per-turn.
|
|
|
94
96
|
|
|
95
97
|
For implementation work, own the delivery path: inspect -> plan -> implement -> validate -> one independent review -> repair material blockers only when required -> targeted validation of repaired scope -> final verification -> commit -> push -> PR.
|
|
96
98
|
|
|
97
|
-
**Routine delivery is autonomous.** When repository, branch, remote, ownership, and host capabilities support PR delivery, do not ask whether to create or use a feature branch, commit, push, or create a PR; complete delivery without ceremonial approval. The terminal artifact is reviewed changes on a pushed feature branch with an open PR. Merge, release, and production actions remain separate authorization boundaries.
|
|
99
|
+
**Routine delivery is autonomous.** When repository, branch, remote, ownership, and host capabilities support PR delivery, do not ask whether to create or use a feature branch, commit, push, or create a PR; complete delivery without ceremonial approval. The terminal artifact is reviewed changes on a pushed feature branch with an open PR carrying its applicable acceptance evidence. Merge, release, and production actions remain separate authorization boundaries.
|
|
98
100
|
|
|
99
|
-
The parent session owns continuation until the selected implementation outcome reaches its terminal artifact. Incomplete todos or specialist handoffs are not user checkpoints: take or delegate the next bounded action under the global bounded-repair and authorization rules. Research-only, planning-only, explicitly read-only, `sonar`, and host-blocked routes terminate at
|
|
101
|
+
The parent session owns continuation until the selected implementation outcome reaches its terminal artifact. Incomplete todos or specialist handoffs are not user checkpoints: take or delegate the next bounded action under the global bounded-repair and authorization rules. Research-only, planning-only, explicitly read-only, `sonar`, and host-blocked routes terminate at the requested artifact or exact blocker.
|
|
100
102
|
|
|
101
|
-
Freeze acceptance, non-goals, and repair limits at the start.
|
|
103
|
+
Freeze the outcome, acceptance, non-goals, and repair limits at the start.
|
|
102
104
|
|
|
103
|
-
|
|
105
|
+
Before final verification, reconcile the original request and accepted follow-ups against the delivered result:
|
|
104
106
|
|
|
105
|
-
|
|
107
|
+
- required artifacts
|
|
108
|
+
- repository checks
|
|
109
|
+
- review
|
|
110
|
+
- documentation
|
|
111
|
+
- changesets
|
|
112
|
+
- PR-body evidence with readback when visual evidence applies
|
|
113
|
+
|
|
114
|
+
Shape PR titles and bodies per the delivery contract in global rules.
|
|
106
115
|
|
|
107
|
-
|
|
116
|
+
Complete in-scope omissions within existing authorization; report unmet requirements as incomplete or blocked, not optional follow-ups.
|
|
108
117
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
- For applicable changes, report evidence captured, unavailable with the checked limitation, or unnecessary with a concrete reason. Source-only documentation edits and mechanical moves preserving rendering can use existing evidence; a refactor label or passing build alone does not establish unchanged visuals. Keep capture effort proportionate to the changed surface.
|
|
118
|
+
A PR or reviewer approval alone does not establish completion.
|
|
119
|
+
|
|
120
|
+
Report briefly at milestones: outcome, verification limits, delivery state, and any blocker or next step.
|
|
121
|
+
|
|
122
|
+
## Visual Delivery Evidence
|
|
115
123
|
|
|
116
|
-
|
|
124
|
+
For changes to rendered UI, including documentation sites and visible CLI output, classify visual evidence as required (changed surfaces, relevant states, expected evidence) or not applicable with a concrete reason, include the evidence requirement in implementation and review briefs, and load the available `create-pull-request` skill for the capture, handoff, publication, and readback procedure before claiming delivery. Follow the project template when one applies; stop on explicit project opt-out. Missing required evidence blocks acceptance: report it incomplete with the checked limitation, and a missing skill never waives it.
|
package/agents/planner.md
CHANGED
|
@@ -76,4 +76,4 @@ Include planned phases, assumptions, verification and rollback evidence, and the
|
|
|
76
76
|
|
|
77
77
|
## Skills
|
|
78
78
|
|
|
79
|
-
Use available skill descriptions for unresolved requirements, product discovery, issue/PRD creation, or prototyping when that work is part of the assignment. Skip skill loads for one-step plans.
|
|
79
|
+
Use available skill descriptions for unresolved requirements, product discovery, issue/PRD creation, or prototyping when that work is part of the assignment. See the available `spec-contract` skill for an optional contract header shape. Skip skill loads for one-step plans.
|
package/agents/reviewer.md
CHANGED
|
@@ -100,6 +100,7 @@ Use these categories to identify relevant risks. Cover the changed contract and
|
|
|
100
100
|
- Is meaningful regression risk covered proportionate to stakes (per Global Rules testing judgment)?
|
|
101
101
|
- Do tests cover edge cases and error paths where the contract demands it?
|
|
102
102
|
- Are tests meaningful (observable behavior, not implementation details)?
|
|
103
|
+
- For visual changes, check rendered coverage against the changed surface; missing required evidence blocks acceptance.
|
|
103
104
|
|
|
104
105
|
### 8. Assumption Validation
|
|
105
106
|
|
|
@@ -114,6 +115,10 @@ Use these categories to identify relevant risks. Cover the changed contract and
|
|
|
114
115
|
- Does the output read like a professional email to a trusted colleague?
|
|
115
116
|
- Format findings as: `style: [issue] -> [fix/dismiss]`
|
|
116
117
|
|
|
118
|
+
### 10. Spec-contract drift (optional pointer, skip when absent)
|
|
119
|
+
|
|
120
|
+
- When a spec-contract header or owning spec is linked, apply its drift, acceptance-coverage, ambiguity-tagging, delta-stating, and append-only rules; skip when absent.
|
|
121
|
+
|
|
117
122
|
## Questions to Ask Yourself
|
|
118
123
|
|
|
119
124
|
1. Is this specific code change related to the overall intended goal?
|
|
@@ -164,7 +169,7 @@ Then produce:
|
|
|
164
169
|
|
|
165
170
|
## Skills
|
|
166
171
|
|
|
167
|
-
|
|
172
|
+
For interface changes, use UI review guidance; for interaction or access risks, accessibility guidance; for page discovery/sharing, metadata guidance; for animation issues, motion guidance. See the available `spec-contract` skill for an optional contract header shape. Load `skill-judge` for skill packages. Skip unrelated loads for backend or infrastructure diffs.
|
|
168
173
|
|
|
169
174
|
## References
|
|
170
175
|
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import{memoize as e,merge as t}from"es-toolkit";import{
|
|
2
|
-
`)
|
|
1
|
+
import{memoize as e,merge as t}from"es-toolkit";import{lstatSync as n,readFileSync as r,readdirSync as i,realpathSync as a}from"node:fs";import o from"node:path";import{parse as s}from"yaml";import{z as c}from"zod";const l=[`fein`,`sonar`,`blitz`],u={blitz:`[MODE: blitz]`,fein:`[MODE: fein]`,sonar:`[MODE: sonar]`},d={blitz:1,fein:3,sonar:2},f=/```[\s\S]*?```|`[^`]*`/gu,p=e=>{let t=[],n;for(f.lastIndex=0;(n=f.exec(e))!==null;)t.push([n.index,n.index+n[0].length]);return t},m=(e,t)=>t.some(([t,n])=>e>=t&&e<n),h=e=>{let t=e.indexOf(`## MODE:`);return t===-1?`${e.replace(/\s+$/u,``)}\n`:`${e.slice(t).replace(/\s+$/u,``)}\n`},g=e=>e.replaceAll(/[.*+?^${}()|[\]\\]/gu,`\\$&`),_=e=>RegExp(`\\b${g(e)}\\b`,`giu`),v=e=>l.includes(e),y=e=>v(e)?u[e]:``,b=(e,t)=>{if(!e)return null;let n=p(e),r=t?new Set([...t].map(e=>e.toLowerCase())):void 0,i=null;for(let t of l){if(r!=null&&r.has(t))continue;let a=_(t),o;for(;(o=a.exec(e))!==null;)m(o.index,n)||(i===null||d[t]>d[i.mode])&&(i={index:o.index,keyword:o[0],mode:t})}return i},x=(e,t)=>(e.slice(0,t.index)+e.slice(t.index+t.keyword.length).replace(/^:\s*/u,``)).replaceAll(/ {2,}/gu,` `).trim(),S=import.meta.dirname,C=o.resolve(S,`..`),w=o.join(C,`agents`),ee=o.join(C,`agents`,`commands`),T=o.join(C,`rules`,`AGENTS.md`),E=e(e=>{try{return h(r(o.resolve(ee,`${e}.md`),`utf-8`))}catch(t){return console.warn(`[maestria] Failed to load mode prompt "${e}":`,t),``}}),D=new Proxy({},{get(e,t,n){return typeof t==`string`&&v(t)?E(t):Reflect.get(e,t,n)}}),O=(e,t)=>{let n=b(e,t);return n===null?null:{index:n.index,keyword:n.keyword,marker:y(n.mode),mode:n.mode,prompt:D[n.mode]}},k=(e,t)=>x(e,t),A=e=>v(e)?D[e]:``,j=e=>y(e),M=c.enum(l),N=c.object({modes:c.object({disabledKeywords:c.array(M).optional()}).optional()}),P=[`.maestria/workflow.md`,`.maestria/rules.md`],F=e=>typeof e==`string`&&e!==``,I=e=>typeof e==`object`&&!!e&&`code`in e&&e.code===`ENOENT`,L=e=>e instanceof Error&&e.message.startsWith(`[maestria] Project config`),R=(e,t)=>{if(t===`directory`)throw Error(`[maestria] Project config "${e}" is a directory, expected a file`);if(t===`other`)throw Error(`[maestria] Project config "${e}" is not a regular file`)},z=(e,t,n)=>L(n)?n:Error(`[maestria] Project config "${e}" ${t}`),te=e=>e===`/`,B=e=>{let{project:t,worktree:n,directory:r}=e;for(let e of[t?.worktree,n])if(F(e)&&!te(e))return e;if(F(r))return r},V={kindOf:e=>{try{let t=n(e);return t.isDirectory()?`directory`:t.isFile()||t.isSymbolicLink()?`file`:`other`}catch(e){if(I(e))return`missing`;throw e}},readFile:e=>r(e,`utf-8`),resolveLink:e=>a(e)},H=(e,t)=>{let n=o.relative(e,t);return n===`..`||n.startsWith(`..${o.sep}`)||o.isAbsolute(n)},U=(e,t,n)=>{let r=o.join(e,t),i;try{i=n.kindOf(r)}catch(e){throw z(t,`cannot be accessed`,e)}if(i===`missing`)return;R(t,i);let a;try{a=n.resolveLink(r)}catch(e){throw z(t,`cannot be resolved`,e)}if(H(e,a))throw Error(`[maestria] Project config "${t}" resolves outside the project root`);let s;try{s=n.kindOf(a)}catch(e){throw z(t,`cannot be accessed`,e)}if(s===`missing`)throw Error(`[maestria] Project config "${t}" cannot be accessed`);R(t,s);let c;try{c=n.readFile(r)}catch(e){throw z(t,`exists but cannot be read`,e)}if(c!==``)return{content:c,rel:t}},W=(e,t=V)=>{if(!F(e))return[];let n;try{n=a(e)}catch(t){if(!I(t))throw Error(`[maestria] Project config root cannot be accessed`);n=o.resolve(e)}let r=[];for(let e of P){let i=U(n,e,t);i!==void 0&&r.push(i)}return r},G=e=>[`Project customization from ${e.rel} (subordinate guidance: it may replace configurable workflows but never waives safety, authorization, or host permissions):`,e.content].join(`
|
|
2
|
+
`),K=e=>typeof e==`object`&&!!e&&!Array.isArray(e),q=e=>e===`all`||e===`primary`||e===`subagent`,J=e=>{if(!K(e))return{};let t={};for(let[n,r]of Object.entries(e))t[n]=r;return t},Y=e=>{let t=s(e),n=K(t)?t:{};return{color:typeof n.color==`string`?n.color:void 0,description:typeof n.description==`string`?n.description:``,maxSteps:n.maxSteps!==void 0&&n.maxSteps!==null&&n.maxSteps!==``?Number(n.maxSteps):void 0,mode:q(n.mode)?n.mode:`subagent`,permission:J(n.permission)}},X=e=>{let t=r(e,`utf-8`),n=o.basename(e,`.md`),i=t.split(`---`);if(i.length<3)throw Error(`Invalid agent file: ${e} - missing frontmatter`);let a=Y(i[1].trim()),s=i.slice(2).join(`---`).trim(),c={description:a.description,mode:a.mode,permission:a.permission,prompt:s};return a.color!==void 0&&a.color!==null&&a.color!==``&&(c.color=a.color),a.maxSteps!==void 0&&a.maxSteps!==null&&a.maxSteps!==0&&(c.maxSteps=a.maxSteps),{config:c,name:n}},Z=()=>{try{let e=i(w).filter(e=>e.endsWith(`.md`)),t={};for(let n of e)try{let{name:e,config:r}=X(o.join(w,n));t[e]=r}catch(e){console.warn(`[maestria] Failed to parse agent file "${n}":`,e)}return t}catch(e){throw console.error(`[maestria] Failed to read agents directory:`,e),Error(`[maestria] Failed to load agents from "${w}": ${e instanceof Error?e.message:String(e)}`,{cause:e})}},Q=(e,t,n)=>{if(e.agent!==`orchestrator`)return;let r=t.parts.find(e=>e.type===`text`);if(r===void 0)return;let i=O(r.text,n);i!==null&&(r.text=[j(i.mode),``,A(i.mode),``,k(r.text,i)].join(`
|
|
3
|
+
`))},ne=(e,n)=>{e.agent=t(e.agent??{},n);let r=[...e.instructions??[]];r.includes(T)||r.push(T),e.instructions=r},re=(e,t)=>{let n=W(t);for(let t of n)e.system.push(G(t))},ie=e=>{e.context.push(`Session was compacted. Task tracking is maintained via todowrite. Active context (files, decisions, blockers) was captured before compaction. Continue where you left off.`,`When project customization from .maestria/workflow.md or .maestria/rules.md is present, it is injected on every model call. Preserve the active project constraints and decisions in the summary.`)},$=async(e,t)=>{let n=N.parse(t??{}),r=new Set((n.modes?.disabledKeywords??[]).map(e=>e.toLowerCase())),i=Z(),a=B(e);return await Promise.resolve(),{"chat.message":async(e,t)=>{Q(e,t,r),await Promise.resolve()},config:async e=>{ne(e,i),await Promise.resolve()},"experimental.chat.system.transform":async(e,t)=>{a!==void 0&&re(t,a),await Promise.resolve()},"experimental.session.compacting":async(e,t)=>{ie(t),await Promise.resolve()}}};export{$ as MaestriaPlugin,$ as default};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maestria/opencode",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.13",
|
|
4
4
|
"description": "OpenCode plugin encoding AI engineering praxis: rules, agents, and workflow discipline.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agents",
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
"hooks": [
|
|
63
63
|
"config",
|
|
64
64
|
"chat.message",
|
|
65
|
+
"experimental.chat.system.transform",
|
|
65
66
|
"experimental.session.compacting"
|
|
66
67
|
]
|
|
67
68
|
},
|
package/rules/AGENTS.md
CHANGED
|
@@ -12,7 +12,7 @@ Cross-platform behavior contract for outcomes, evidence, safety, delegation, rev
|
|
|
12
12
|
- **!!! Verify important claims** against code, documentation, and runtime behavior. Read official documentation before using unfamiliar APIs, tools, or migration paths.
|
|
13
13
|
- **!!! Match effort to stakes.** Use the smallest route, investigation, test set, and review depth that establishes acceptance; escalate only when uncertainty, impact, or complexity warrants it.
|
|
14
14
|
- **!!! Prefer reuse over reinvention.** Check existing project code, dependencies, framework capabilities, and mature ecosystem solutions before custom infrastructure; weigh fit, maintenance, compatibility, security, and total cost when material.
|
|
15
|
-
- **!!! Exhaust available evidence before asking.** Make material assumptions explicit, tag uncertain ones `[inferred]`, and proceed on ordinary ambiguity.
|
|
15
|
+
- **!!! Exhaust available evidence before asking.** Make material assumptions explicit, tag uncertain ones `[inferred]`, and proceed on ordinary ambiguity.
|
|
16
16
|
- **!!! Exercise testing judgment, not coverage.** Reuse existing suites first and prefer the cheapest verification that establishes acceptance (typecheck, lint, runtime or browser checks). Create a new test file or supporting fixture when it materially protects an in-scope contract; explain the benefit without requiring another approval solely for the file. Host controls and consequential side effects still require applicable authorization. Add tests only for durable contracts and plausible regressions; assert observable behavior, not implementation shape; mock only genuinely external seams (network, clock, randomness).
|
|
17
17
|
- **!!! Keep output self-contained and professional.** Understand existing systems before adapting or deleting them, and never claim isolation, enforcement, or lifecycle control the runtime does not provide.
|
|
18
18
|
- **!!! Keep output economical.** Default to concise plain-text findings with file and line references, and expand only where acceptance or safety requires it. Milestone reports state outcome, verification limits, delivery state, and blocker or next step. Match surrounding doc tone for prose tasks.
|
|
@@ -28,7 +28,18 @@ Per-turn keywords when the host supports them: `fein` requests the full route wi
|
|
|
28
28
|
|
|
29
29
|
## Outcome and Scope
|
|
30
30
|
|
|
31
|
-
Define the primary user outcome, acceptance evidence, and non-goals before substantial work or delegation; measure progress against them, not activity.
|
|
31
|
+
Define the primary user outcome, acceptance evidence, and non-goals before substantial work or delegation; measure progress against them, not activity.
|
|
32
|
+
|
|
33
|
+
At acceptance, classify visual evidence as required (changed surfaces, relevant states, expected evidence) or not applicable with a concrete reason, and carry that classification through briefs to delivery.
|
|
34
|
+
|
|
35
|
+
### Documentation and changesets
|
|
36
|
+
|
|
37
|
+
- Required affected docs are part of acceptance; carry them through briefs to final reconciliation.
|
|
38
|
+
- When docs work applies, load the available `docs-update` methodology skill and follow it; a missing skill never blocks ordinary docs work.
|
|
39
|
+
|
|
40
|
+
Keep file, package, and runtime scope explicit. Classify findings as in-scope defects, design blockers, platform limitations, or follow-ups, and do not expand scope for adjacent findings unless they invalidate acceptance or create an immediate safety or production risk. Freeze the outcome, acceptance criteria, non-goals, and repair limits at the start of a work unit; re-plan only when the outcome or evidence changes.
|
|
41
|
+
|
|
42
|
+
Research-only, planning-only, explicitly read-only, and host-blocked work ends at its requested artifact or exact blocker.
|
|
32
43
|
|
|
33
44
|
## Delegation and Context
|
|
34
45
|
|
|
@@ -38,7 +49,11 @@ Delegate only when another context, expertise, independent check, or parallel wo
|
|
|
38
49
|
|
|
39
50
|
Maker/checker split: the implementer must not approve its own work. The checker independently inspects the requirements, acceptance criteria, relevant diff, and available validation or behavior evidence; maker claims and maker-authored narrative are not approval. Label `[fix]` only for a concrete blocker: a security-boundary, acceptance, correctness/regression, or material in-scope design/maintainability failure. Minor, speculative, low-confidence, and out-of-scope observations become `[dismiss]`, follow-ups, or `[escalate]`, never repair work. Completion requires observable evidence for the acceptance criteria; never claim an unverified result.
|
|
40
51
|
|
|
41
|
-
Match evidence to the changed contract: rendered appearance and interactions need rendered checks; tests, type checks, and builds establish only what they exercise. Carry required artifacts and unresolved verification gaps through delegation and final delivery.
|
|
52
|
+
Match evidence to the changed contract: rendered appearance and interactions need rendered checks; tests, type checks, and builds establish only what they exercise. Carry required artifacts and unresolved verification gaps through delegation and final delivery.
|
|
53
|
+
|
|
54
|
+
Missing required evidence blocks acceptance. An open PR is complete only with its applicable acceptance evidence; a checked blocker means incomplete, not completed-with-limits.
|
|
55
|
+
|
|
56
|
+
Missing tools or optional attachment support do not waive an explicit user or project evidence requirement; capture, handoff, publication in the PR body, and readback are distinct stages, and a local path alone does not satisfy PR-body publication. Report that requirement as incomplete with the checked limitation.
|
|
42
57
|
|
|
43
58
|
## Bounded Repair and Fail-Loud Behavior
|
|
44
59
|
|
|
@@ -48,10 +63,18 @@ Default to one independent review and, only when blockers exist, one repair/re-r
|
|
|
48
63
|
|
|
49
64
|
Safety and authorization override user intent, methodology, and brevity. Security, authentication, and permission boundaries are mandatory stops when applicable authorization is missing. Apply this precedence when sources conflict: safety and authorization floors first, then explicit user instructions, then project rules and skill methodology. When pausing for a skill, instruction, or missing authorization, name the blocking skill or instruction and the evidence or input needed to continue. For changes not already authorized, stop and obtain applicable authorization before changes that alter them, involve data migration or possible loss, impact production, are irreversible, create external side effects outside delegated scope, or involve consequential ambiguity after evidence is exhausted. Ordinary in-scope security defects may be repaired autonomously. Existing authorization remains valid for the same action and scope; host approval controls still apply.
|
|
50
65
|
|
|
51
|
-
The orchestrator owns continuation for implementation and delivery work until the outcome reaches its terminal artifact; incomplete todos, pending handoffs, or specialist messages saying "continue if needed" are not a user checkpoint. Routine delivery is autonomous.
|
|
66
|
+
The orchestrator owns continuation for implementation and delivery work until the outcome reaches its terminal artifact; incomplete todos, pending handoffs, or specialist messages saying "continue if needed" are not a user checkpoint. Routine delivery is autonomous.
|
|
67
|
+
|
|
68
|
+
For implementation work, continue through validation, review, and delivery: when repository, branch, remote, ownership, and host capabilities support it, create or use a non-protected feature branch and continue through commit, push, and PR without asking whether to perform those steps - these are delivery mechanics, not approval checkpoints. Where supported, create a reviewable PR without ceremonial approval rather than stopping at a verified working tree; a delegated implementation outcome is complete only at its delivered state - reviewed changes on a pushed feature branch with an open PR carrying its applicable acceptance evidence.
|
|
69
|
+
|
|
70
|
+
Never commit or push protected branches; inspect status, stage only intended files, and use logical conventional commits.
|
|
52
71
|
|
|
53
72
|
Merge, release, and production operations remain separate authorization boundaries. Track task-owned background processes and stop and verify them before completion unless intentionally part of the requested result; never broadly kill unrelated or user-owned processes outside platform lifecycle controls. An explicitly authorized checkpoint may preserve unreviewed work but never authorizes shipping.
|
|
54
73
|
|
|
74
|
+
### PR delivery contract
|
|
75
|
+
|
|
76
|
+
Core owns the outcome, evidence, review, and authorization floors for every reviewable PR. Title, body, and visual-evidence conventions live in the `create-pull-request` methodology skill: for an active PR task, load the available skill before drafting, and follow the project template when one applies while preserving the required information. Stop on explicit project opt-out. A missing skill never blocks delivery and never waives review or authorization; write a sensible body instead. The reviewer checks rendered coverage against the changed surface; after any push that changes diff or verification, refresh the draft and read back the published body before reporting delivery complete.
|
|
77
|
+
|
|
55
78
|
## Canonical Source Invariant
|
|
56
79
|
|
|
57
|
-
Edit the project's authoritative source and regenerate derived outputs with its documented workflow; never hand-edit generated
|
|
80
|
+
Edit the project's authoritative source and regenerate derived outputs with its documented workflow; never hand-edit generated outputs. Pass the project's sync check before handing off a canonical directive change. Repository-specific source paths and commands belong in that repository's instructions.
|