nobrainer-tech-flow 0.0.0-stage → 2.4.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/.agents/plugins/marketplace.json +20 -0
- package/.claude-plugin/marketplace.json +18 -0
- package/.claude-plugin/plugin.json +21 -0
- package/.codex-plugin/plugin.json +47 -0
- package/.opencode/INSTALL.md +37 -0
- package/.opencode/plugins/nobrainer-tech-skills.js +66 -0
- package/.pi/extensions/nobrainer-tech-skills.js +64 -0
- package/AGENTS.md +204 -0
- package/CLAUDE.md +204 -0
- package/CONTRIBUTING.md +70 -0
- package/GEMINI.md +1 -0
- package/LICENSE +21 -0
- package/README.md +658 -2
- package/SECURITY.md +33 -0
- package/adapters/bootstrap.md +27 -0
- package/assets/nobrainer-tech-logo.svg +1 -0
- package/assets/nobrainer-workflow.svg +155 -0
- package/assets/plugin-logo.png +0 -0
- package/bin/nobrainer-tech-flow.mjs +48 -0
- package/docs/BOUNDED_RUNNER.md +60 -0
- package/docs/CHAT_PLUGINS.md +29 -0
- package/docs/COMPATIBILITY.md +371 -0
- package/docs/INSTALL.md +626 -0
- package/docs/MIGRATION_TO_FLOW.md +117 -0
- package/docs/NAMING.md +39 -0
- package/docs/PRIVACY.md +9 -0
- package/docs/SESSION_RESTART.md +70 -0
- package/docs/SKILL_CURATION.md +124 -0
- package/docs/TESTING.md +232 -0
- package/docs/TRY_IT.md +109 -0
- package/docs/releases/v1.0.0.md +81 -0
- package/docs/releases/v1.1.0.md +85 -0
- package/docs/releases/v1.10.0.md +34 -0
- package/docs/releases/v1.11.0-publication-readback.md +25 -0
- package/docs/releases/v1.11.0.md +42 -0
- package/docs/releases/v1.12.0.md +30 -0
- package/docs/releases/v1.13.0.md +46 -0
- package/docs/releases/v1.14.0.md +43 -0
- package/docs/releases/v1.14.1.md +21 -0
- package/docs/releases/v1.2.0.md +87 -0
- package/docs/releases/v1.2.1.md +92 -0
- package/docs/releases/v1.3.0-publication-readback.md +69 -0
- package/docs/releases/v1.3.0.md +66 -0
- package/docs/releases/v1.3.1-publication-readback.md +76 -0
- package/docs/releases/v1.3.1.md +59 -0
- package/docs/releases/v1.4.0-publication-readback.md +81 -0
- package/docs/releases/v1.4.0.md +43 -0
- package/docs/releases/v1.5.0-publication-readback.md +76 -0
- package/docs/releases/v1.5.0.md +54 -0
- package/docs/releases/v1.6.0.md +64 -0
- package/docs/releases/v1.6.1-publication-readback.md +53 -0
- package/docs/releases/v1.6.1.md +82 -0
- package/docs/releases/v1.7.0.md +42 -0
- package/docs/releases/v1.7.1-publication-readback.md +64 -0
- package/docs/releases/v1.7.1.md +49 -0
- package/docs/releases/v1.8.0.md +63 -0
- package/docs/releases/v1.8.1.md +32 -0
- package/docs/releases/v1.9.0.md +33 -0
- package/docs/releases/v2.0.0-candidate.md +28 -0
- package/docs/releases/v2.0.0.md +53 -0
- package/docs/releases/v2.0.1.md +135 -0
- package/docs/releases/v2.0.2.md +189 -0
- package/docs/releases/v2.1.0.md +64 -0
- package/docs/releases/v2.1.1.md +43 -0
- package/docs/releases/v2.2.0.md +64 -0
- package/docs/releases/v2.2.1.md +11 -0
- package/docs/releases/v2.3.0.md +97 -0
- package/docs/releases/v2.3.1.md +71 -0
- package/docs/releases/v2.3.2.md +242 -0
- package/docs/releases/v2.4.0.md +126 -0
- package/gemini-extension.json +6 -0
- package/hooks/claude-hooks.json +17 -0
- package/hooks/hooks-cursor.json +10 -0
- package/hooks/run-hook.cmd +36 -0
- package/hooks/session-start +38 -0
- package/package.json +69 -4
- package/plugin.json +51 -0
- package/scripts/build_plugin.py +50 -0
- package/scripts/check_flow_update.py +18 -0
- package/scripts/check_public_commit.py +86 -0
- package/scripts/fetch_public_refs.py +69 -0
- package/scripts/install.py +600 -0
- package/scripts/install.sh +1392 -0
- package/scripts/install_guards.py +279 -0
- package/scripts/install_personalization.py +527 -0
- package/scripts/install_skills.py +951 -0
- package/scripts/npm_install.py +85 -0
- package/scripts/recommend_flow_setup.py +1522 -0
- package/scripts/validate_skills.py +465 -0
- package/skills/nobrainer-auto-fine-tune/SKILL.md +79 -0
- package/skills/nobrainer-auto-fine-tune/references/capacity-audit.md +49 -0
- package/skills/nobrainer-autoimprove/SKILL.md +212 -0
- package/skills/nobrainer-autoimprove/scripts/count_words.py +22 -0
- package/skills/nobrainer-browser/SKILL.md +234 -0
- package/skills/nobrainer-browser/references/cdp-profile-restart.md +93 -0
- package/skills/nobrainer-build/SKILL.md +173 -0
- package/skills/nobrainer-codex-context/SKILL.md +111 -0
- package/skills/nobrainer-codex-context/scripts/codex_context.py +175 -0
- package/skills/nobrainer-decide/SKILL.md +198 -0
- package/skills/nobrainer-dispatcher/SKILL.md +256 -0
- package/skills/nobrainer-dispatcher/agents/openai.yaml +4 -0
- package/skills/nobrainer-rca/SKILL.md +163 -0
- package/skills/nobrainer-research/SKILL.md +131 -0
- package/skills/nobrainer-review/SKILL.md +195 -0
- package/skills/nobrainer-security/SKILL.md +166 -0
- package/skills/nobrainer-sessions/SKILL.md +223 -0
- package/skills/nobrainer-sessions/references/evidence-receipt.md +55 -0
- package/skills/nobrainer-sessions/references/protocol.md +337 -0
- package/skills/nobrainer-sessions/references/session-restart.md +255 -0
- package/skills/nobrainer-sessions/scripts/evidence_receipt.py +373 -0
- package/skills/nobrainer-sessions/scripts/restart_gate.py +140 -0
- package/skills/nobrainer-sessions/scripts/run_bounded.py +390 -0
- package/skills/nobrainer-sessions/scripts/session_title.py +43 -0
- package/skills/nobrainer-skill-doctor/SKILL.md +149 -0
- package/skills/nobrainer-skill-doctor/references/astra.md +19 -0
- package/skills/nobrainer-skill-doctor/scripts/audit.py +100 -0
- package/skills/nobrainer-skill-doctor/scripts/context_candidates.py +133 -0
- package/skills/nobrainer-spec-driven-development/SKILL.md +132 -0
- package/skills/nobrainer-spec-driven-development/references/spec-template.md +114 -0
- package/skills/nobrainer-team/SKILL.md +165 -0
- package/skills/nobrainer-team/references/team-plan.md +64 -0
- package/skills/nobrainer-tech-flow/SKILL.md +239 -0
- package/skills/nobrainer-tech-flow/VERSION +1 -0
- package/skills/nobrainer-tech-flow/references/autopilot.md +72 -0
- package/skills/nobrainer-tech-flow/references/codex-routing.md +21 -0
- package/skills/nobrainer-tech-flow/references/communication.md +108 -0
- package/skills/nobrainer-tech-flow/references/correction-hooks.md +110 -0
- package/skills/nobrainer-tech-flow/references/daily-update.md +28 -0
- package/skills/nobrainer-tech-flow/references/delivery.md +243 -0
- package/skills/nobrainer-tech-flow/references/idea-to-delivery.md +82 -0
- package/skills/nobrainer-tech-flow/references/long-run-state.md +209 -0
- package/skills/nobrainer-tech-flow/references/model-routing.md +83 -0
- package/skills/nobrainer-tech-flow/references/optional-decisions.md +83 -0
- package/skills/nobrainer-tech-flow/references/project-start.md +22 -0
- package/skills/nobrainer-tech-flow/references/routing.md +125 -0
- package/skills/nobrainer-tech-flow/references/setup.md +180 -0
- package/skills/nobrainer-tech-flow/references/worktrees.md +138 -0
- package/skills/nobrainer-tech-flow/scripts/check_flow_update.py +298 -0
- package/skills/nobrainer-tech-flow/scripts/cleanup_worktree.py +327 -0
- package/skills/nobrainer-tech-flow/scripts/decision_config.py +107 -0
- package/skills/nobrainer-tech-flow/scripts/flow_guard.py +252 -0
- package/skills/nobrainer-tech-flow/scripts/typed_decisions.py +210 -0
- package/skills/nobrainer-wiki/SKILL.md +164 -0
- package/skills/nobrainer-wiki/references/setup.md +88 -0
- package/skills/nobrainer-writing/SKILL.md +272 -0
- package/skills/nobrainer-writing/agents/openai.yaml +4 -0
- package/skills/nobrainer-writing/references/brief-artifacts.md +357 -0
- package/skills/nobrainer-writing/references/plain-technical-english.md +76 -0
- package/skills/nobrainer-writing/references/research.md +86 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
# Deliver the agreed outcome
|
|
2
|
+
|
|
3
|
+
Read for non-trivial delivery and before reporting a blocker. Ordinary autopilot
|
|
4
|
+
uses this contract. `yolo` or `yolo mode`, when explicitly requested for this
|
|
5
|
+
workflow, is an alias for persistent execution of authorized work. It changes
|
|
6
|
+
neither permissions, model, budget nor the host's safety controls. It is not a
|
|
7
|
+
CLI flag or another skill.
|
|
8
|
+
|
|
9
|
+
## Establish the goal without another prompt
|
|
10
|
+
|
|
11
|
+
For substantial implementation, automatically derive an observable outcome and
|
|
12
|
+
DoD from the owner's request before editing. Reuse the existing tracker; if work
|
|
13
|
+
needs durable state, write a short task-local Markdown goal. Keep only acceptance,
|
|
14
|
+
current progress, authority and the next useful step. Do not ask the owner to
|
|
15
|
+
name the file or restate an already clear goal. Small answers need no artifact.
|
|
16
|
+
|
|
17
|
+
Prefer a current short-term goal linked to the owner's long-term direction or
|
|
18
|
+
maintained roadmap. Partition accepted outcomes into visible milestones, keep
|
|
19
|
+
the whole goal open while a required item remains, and choose the next ready
|
|
20
|
+
unit as each stage closes. Do not invent an LDD method when the acronym or
|
|
21
|
+
source is unresolved.
|
|
22
|
+
|
|
23
|
+
A native goal is separate: create it only when explicitly requested and supported
|
|
24
|
+
under the host tool contract. Reuse an existing goal; never replace an unfinished
|
|
25
|
+
goal or invent a token budget. Read back native goal creation before claiming it.
|
|
26
|
+
A Markdown goal does not promise scheduled continuation or automatically press
|
|
27
|
+
START. When START is owner-only, explain that requirement once; never claim it
|
|
28
|
+
was resumed. Within available execution time, continue useful authorized work.
|
|
29
|
+
|
|
30
|
+
When the owner requests an end-to-end result, including an idea that becomes
|
|
31
|
+
an SDD, bind one overarching goal to all of that SDD's acceptance IDs. An explicit
|
|
32
|
+
"execute the whole SDD" request has the same effect. Do not substitute a local milestone, plan approval,
|
|
33
|
+
or test suite for the whole outcome. Automatically maintain a visible TODO:
|
|
34
|
+
`[x] accepted with evidence`, `[>] executing`, `[ ] remaining`, `[!] blocked`.
|
|
35
|
+
After each accepted stage, update the canonical tracker, show the changed TODO
|
|
36
|
+
items and move to the next ready stage without requesting "continue". Keep
|
|
37
|
+
blocked IDs open while independent stages advance. Use short stage labels; link
|
|
38
|
+
long evidence. No phase silently disappears from the full-scope acceptance set.
|
|
39
|
+
|
|
40
|
+
A request to set a goal or execute the whole SDD with a goal authorizes native
|
|
41
|
+
goal creation when the host permits it. If the host requires an explicit native
|
|
42
|
+
goal request and the wording does not meet that requirement, maintain the
|
|
43
|
+
Markdown goal and ask once in BUDDY if native continuation is wanted. Never imply
|
|
44
|
+
that a Markdown file activated host scheduling. Update the file after each stage;
|
|
45
|
+
use native updates only for operations the actual tool supports. A host that only
|
|
46
|
+
supports complete/blocked must not receive invented native progress updates.
|
|
47
|
+
|
|
48
|
+
Carry authority across turns. Translate "go ahead" against the immediately
|
|
49
|
+
proposed concrete action and preserve its target and exclusions. Do not ask for
|
|
50
|
+
permission again for that action. New consequences outside that scope still need
|
|
51
|
+
approval. A worker's completion is one milestone, not completion of the goal.
|
|
52
|
+
|
|
53
|
+
## BUDDY: collect the permission package once
|
|
54
|
+
|
|
55
|
+
After initial read-only discovery, identify the concrete actions needed to finish
|
|
56
|
+
the whole scope. Classify each as already authorized, routine/reversible within
|
|
57
|
+
scope, or requiring a missing owner decision. Resolve routine implementation
|
|
58
|
+
choices yourself. Ask one bundled, plain-language question only for missing
|
|
59
|
+
consequential permissions. Name exact projects/targets and effects: for example
|
|
60
|
+
merge these changes, deploy this service, or create this paid resource within a
|
|
61
|
+
specified ceiling. Include browser actions when they carry those effects; merely
|
|
62
|
+
opening a page is not a separate permission category.
|
|
63
|
+
|
|
64
|
+
Record the answer and any exclusions in the existing tracker. Do not seek a blank
|
|
65
|
+
check to spend, message people, delete data or bypass controls. Unforeseen new
|
|
66
|
+
consequences still need consent. Preserve refusals and ceilings across stages.
|
|
67
|
+
If a late gate is unavoidable, finish its preparation first and continue any
|
|
68
|
+
independent work while the question is pending.
|
|
69
|
+
|
|
70
|
+
## Short work communication
|
|
71
|
+
|
|
72
|
+
Use terse, natural progress text: result, TODO delta, next action. Avoid repeated
|
|
73
|
+
skill announcements, schema dumps and unchanged polling narration. Do not enforce
|
|
74
|
+
a word count that loses conditions, errors, commands or required human actions.
|
|
75
|
+
Keep authored documents and product copy complete and natural.
|
|
76
|
+
|
|
77
|
+
For a true owner blocker, say: `Blocked: <acceptance item>. Tried: <method/result>.
|
|
78
|
+
You: <exact action and destination>. Then: <how work can resume>.` Include an
|
|
79
|
+
exact link or copy-ready command when verified. Do not ask the owner to invent
|
|
80
|
+
the next diagnostic step. A paused native goal with an owner-only START requires
|
|
81
|
+
an explicit START callout, not a claim of automatic resumption.
|
|
82
|
+
|
|
83
|
+
## Resolve an obstacle before escalating it
|
|
84
|
+
|
|
85
|
+
Separate authority from capability: a permitted action may lack a tool, and an
|
|
86
|
+
available tool may not authorize an action. Before saying BLOCKED, identify the
|
|
87
|
+
exact failed operation and the acceptance item it prevents. Then:
|
|
88
|
+
|
|
89
|
+
1. Check related instructions and current evidence, including prior permission.
|
|
90
|
+
2. Discover the relevant supported API, CLI or browser capability. An authenticated
|
|
91
|
+
UI step is agent work when its action and target are already authorized. Inspect
|
|
92
|
+
the UI, perform the step and read back the result rather than asking the owner
|
|
93
|
+
to click merely because it is in a browser.
|
|
94
|
+
3. If the preferred method is technically unavailable, try a relevant permitted
|
|
95
|
+
alternative within the same scope. Never evade an access denial, approval
|
|
96
|
+
rejection, sandbox or an explicit channel restriction through another method.
|
|
97
|
+
4. A missing credential means inspect the documented credential location or normal
|
|
98
|
+
login flow without exposing secrets. Human MFA, unavailable entitlement and
|
|
99
|
+
an owner-only decision remain genuine blockers for dependent work.
|
|
100
|
+
5. Continue independent acceptance items. One blocked integration cannot turn
|
|
101
|
+
an entire backlog into BLOCKED or justify unrelated speculative work.
|
|
102
|
+
|
|
103
|
+
A failed test is a repair task. Missing evidence is a verification task when the
|
|
104
|
+
agent can obtain it. A missing optional helper is a MAIN fallback. Poll timeouts
|
|
105
|
+
are observations; preserve the same handle and use bounded waits. A terminal
|
|
106
|
+
worker failure requires reconciling writes before MAIN takes over. Do not use a
|
|
107
|
+
terminal failure to justify accepting unreviewed output.
|
|
108
|
+
|
|
109
|
+
When no permitted path remains, report only: the blocked acceptance item, attempted
|
|
110
|
+
method and observed error, why relevant alternatives cannot complete it, the exact
|
|
111
|
+
missing human action/access, and what independent work was completed. Distinguish
|
|
112
|
+
OWNER_ACTION, EXTERNAL_UNAVAILABLE, POLICY_DENIED and TECHNICAL_FAILURE. Apply
|
|
113
|
+
native goal blocked-state rules separately; do not mark a whole goal blocked while
|
|
114
|
+
useful authorized work remains. Never turn an unknown right/license into consent.
|
|
115
|
+
|
|
116
|
+
## Keep review proportional to progress
|
|
117
|
+
|
|
118
|
+
Review the next executable slice against concrete acceptance and failure paths.
|
|
119
|
+
For a stable slice, default to one review and one focused correction verification.
|
|
120
|
+
More review needs a newly evidenced material defect or changed risk, not a new
|
|
121
|
+
amendment number, stylistic preference or desire for perfect prose. Preserve
|
|
122
|
+
required independent/security gates; a review budget never makes a failed gate pass.
|
|
123
|
+
|
|
124
|
+
After repeated review without accepted progress, stop the whole-plan loop. Deduplicate
|
|
125
|
+
findings, retain blockers for the affected slice, defer non-blocking suggestions,
|
|
126
|
+
and implement an already-authorized independent slice or resolve the concrete
|
|
127
|
+
blocking defect in MAIN. Escalate only an actual unresolved owner choice. Do not
|
|
128
|
+
reset the review budget by renaming a plan or opening a new reviewer task.
|
|
129
|
+
|
|
130
|
+
Prefer maintainable code over line-count games. Honor real project limits by
|
|
131
|
+
cohesive decomposition; do not invent arbitrary caps or spend worker cycles on
|
|
132
|
+
blank-line shaving. Re-run only checks affected by the final change plus required
|
|
133
|
+
repository checks. Finish after acceptance, not after an arbitrary quantity of
|
|
134
|
+
reviews, tests or generated files.
|
|
135
|
+
|
|
136
|
+
## Coordinated team execution
|
|
137
|
+
|
|
138
|
+
MAIN owns the full outcome, coordination, critical path, dependencies, integration,
|
|
139
|
+
owner decisions and acceptance. Before executing non-trivial work or entering a
|
|
140
|
+
blocking wait, identify independent ready units and dispatch every useful eligible
|
|
141
|
+
unit promptly to native workers within verified host capacity and authorized usage
|
|
142
|
+
limits. Eligibility requires accepted dependencies, authority, a supported route
|
|
143
|
+
and a free write scope. One visible MAIN coordinator is compatible with many native
|
|
144
|
+
workers. Before a large or risky multi-writer fan-out that is not already
|
|
145
|
+
executable, run the [builder-readiness check](idea-to-delivery.md#builder-readiness-check);
|
|
146
|
+
skip it for already-executable plans and mechanical changes.
|
|
147
|
+
|
|
148
|
+
When an eligible ready unit stays in MAIN while a useful slot is free, record the
|
|
149
|
+
concrete reason in the current plan: shared mutable state, missing accepted
|
|
150
|
+
dependency, unavailable capability/route, authority gate, usage limit, or a tiny or
|
|
151
|
+
tightly coupled step. A missing measured speedup is not by itself a reason to keep
|
|
152
|
+
eligible work in MAIN.
|
|
153
|
+
|
|
154
|
+
A single bounded native delegate needs no Dispatcher queue; MAIN keeps coordination
|
|
155
|
+
and acceptance. Use the [small native-worker packet](communication.md#small-native-worker-packet).
|
|
156
|
+
Durable queues retain the [long-run state](long-run-state.md) and full
|
|
157
|
+
Sessions/Dispatcher contract. Visible conversations follow the
|
|
158
|
+
[canonical rule](../SKILL.md#choose-the-smallest-workflow); never substitute
|
|
159
|
+
them for unavailable native workers.
|
|
160
|
+
|
|
161
|
+
Target concurrency is the minimum of the effective host/model limit, authorized
|
|
162
|
+
usage limits and useful independent ready units. A configured ceiling is not proof
|
|
163
|
+
of available runtime slots. Count running reviewers, existing live workers and any
|
|
164
|
+
permitted descendants too. If capacity is unknown, dispatch ready units
|
|
165
|
+
incrementally within host policy and remaining quota until a capacity refusal;
|
|
166
|
+
never spawn dummy probes. Reconcile uncertain spawn results by ID before retrying.
|
|
167
|
+
If a send may have succeeded but returned no ID,
|
|
168
|
+
reserve its possible capacity and write scope; do not retry or run that unit in
|
|
169
|
+
MAIN until the host proves no worker is executing. Record delivery UNKNOWN in
|
|
170
|
+
the existing tracker. This differs from proven pre-send unavailability, which
|
|
171
|
+
permits MAIN fallback. A refusal reduces concurrency; it is not a goal
|
|
172
|
+
blocker. Do not duplicate a unit after an uncertain send or timeout. Never bypass
|
|
173
|
+
a host restriction.
|
|
174
|
+
|
|
175
|
+
Use [communication](communication.md) for assignments and reports: plain
|
|
176
|
+
technical English between agents by default, with the artifact language explicit
|
|
177
|
+
when different. Preserve required formats and explicit language overrides.
|
|
178
|
+
|
|
179
|
+
Each assignment names one bounded outcome, exact inputs/version, write scope,
|
|
180
|
+
dependencies, owning method, authority, acceptance evidence, model/effort, budget
|
|
181
|
+
and stop conditions. Schedule independent implementation, research and verification
|
|
182
|
+
together only when mutable state does not overlap. Keep one owner for every shared
|
|
183
|
+
mutable resource: files, browser/profile, test database, port, migration, generated
|
|
184
|
+
artifact and integration surface. Use isolated worktrees where appropriate, then
|
|
185
|
+
integrate explicitly. No duplicate investigations of the same question; read-only
|
|
186
|
+
reviews may share frozen input when their questions are distinct.
|
|
187
|
+
|
|
188
|
+
Use flat MAIN-owned delegation by default. Recursive delegation requires express
|
|
189
|
+
assignment authority and a reserved capacity slot under the same verified host
|
|
190
|
+
capacity. A host or owner prohibition remains controlling. Without reliable
|
|
191
|
+
cross-tree accounting, keep delegation flat. Apply the [model policy](model-routing.md),
|
|
192
|
+
including its Codex delegated preset; preserve explicit owner overrides.
|
|
193
|
+
|
|
194
|
+
Prioritize work that unblocks downstream stages. MAIN advances useful integration
|
|
195
|
+
or unresolved dependencies while workers execute. Queue excess ready units. On each
|
|
196
|
+
worker completion, MAIN reconciles the exact returned ID, inspects the current
|
|
197
|
+
artifact, assigned scope and required proof, and verifies that the worker has
|
|
198
|
+
stopped writing. Then release only that unit's proven ownership, recompute readiness
|
|
199
|
+
and dispatch newly ready work without waiting for unrelated slow workers. A
|
|
200
|
+
worker's report, exit code or self-score does not accept its artifact.
|
|
201
|
+
|
|
202
|
+
A waiting, suspended or uncertain worker has a stated reason and a bounded next
|
|
203
|
+
observation in the current tracker. Reserve its scope and possible capacity until
|
|
204
|
+
exact-ID readback reconciles its state. Prefer native completion notifications or
|
|
205
|
+
bounded waits on the same IDs; wait only when no useful independent work remains
|
|
206
|
+
for MAIN or available slots. Do not poll unchanged status as a substitute for work.
|
|
207
|
+
|
|
208
|
+
Keep quota/cost ceilings, API/test-environment limits, runtime health warnings/hard
|
|
209
|
+
limits, credential boundaries, owner gates and refusal handling. Shared sequential
|
|
210
|
+
work remains serial. No filler units, speculative future work, fixed swarm or
|
|
211
|
+
duplicated full-context prompts. Do not split a tiny task merely to reach a number.
|
|
212
|
+
Measure progress by accepted outcomes and elapsed delivery, never by agent count
|
|
213
|
+
or messages sent. Claims about speed, token use or quality require measured
|
|
214
|
+
evidence; dispatch alone proves none of them.
|
|
215
|
+
|
|
216
|
+
## GDD: goal-driven delivery through milestones
|
|
217
|
+
|
|
218
|
+
The [approved-plan autopilot loop](autopilot.md) owns select, execute, check,
|
|
219
|
+
review, correct and advance. This section owns the milestone map and its state
|
|
220
|
+
transitions; use both without creating a second tracker.
|
|
221
|
+
|
|
222
|
+
GDD is this workflow's execution pattern, not a new skill or a claim of inventing
|
|
223
|
+
Goal-Driven Development. SDD owns requirements; the existing task tracker owns
|
|
224
|
+
milestones and current state. For whole-SDD execution, derive milestones from its
|
|
225
|
+
acceptance set. Each milestone records an ID, observable outcome, acceptance IDs,
|
|
226
|
+
dependencies, owner, write scope, evidence and state. Every required acceptance ID
|
|
227
|
+
must be assigned; cross-cutting criteria need a final integrated check.
|
|
228
|
+
|
|
229
|
+
Use `PENDING -> READY -> RUNNING -> VERIFYING -> ACCEPTED`. `READY` requires
|
|
230
|
+
accepted dependencies, necessary permission and a free write scope. A failed
|
|
231
|
+
verification returns to repair; an external dependency marks only the affected
|
|
232
|
+
milestone `BLOCKED` with its evidence and unblock action. Resume after fresh
|
|
233
|
+
verification of that action. Superseded requirements invalidate only affected
|
|
234
|
+
milestones and downstream evidence. Completed workers never self-accept.
|
|
235
|
+
|
|
236
|
+
After each milestone, MAIN verifies evidence, updates the existing TODO and
|
|
237
|
+
selects the next ready work without waiting for a new user prompt. Independent
|
|
238
|
+
milestones may run together up to the target concurrency in
|
|
239
|
+
[coordinated team execution](#coordinated-team-execution). Keep one overarching goal open
|
|
240
|
+
until every required milestone and integrated DoD passes. Do not complete and
|
|
241
|
+
replace the native goal for each milestone. Native goals are optional mirrors;
|
|
242
|
+
Markdown remains the portable record. Host pauses or quotas can suspend execution,
|
|
243
|
+
so preserve the next action without promising an automatic wakeup.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# From an idea to a checked result
|
|
2
|
+
|
|
3
|
+
Use when the owner supplies a goal or idea without an implementation plan.
|
|
4
|
+
An idea is enough to begin discovery. It is not approval for every possible
|
|
5
|
+
product choice or external effect.
|
|
6
|
+
|
|
7
|
+
## Make the idea executable
|
|
8
|
+
|
|
9
|
+
1. Read the existing project and relevant decisions. State the desired result,
|
|
10
|
+
audience and smallest useful scope. Separate supplied facts (`OBSERVED`),
|
|
11
|
+
reasonable assumptions (`INFERRED`), proposed choices (`RECOMMENDED`) and
|
|
12
|
+
unresolved facts (`UNKNOWN`). Do not present your defaults as owner decisions.
|
|
13
|
+
2. Choose routine, reversible implementation details within the request.
|
|
14
|
+
Explain consequential assumptions. Ask one focused round only for missing
|
|
15
|
+
choices that change the product, acceptance, risk or authority; continue
|
|
16
|
+
independent work while that decision is pending.
|
|
17
|
+
3. Use the [spec template](../../nobrainer-spec-driven-development/references/spec-template.md) when SDD is requested or its
|
|
18
|
+
maintenance is justified. Otherwise use Flow's compact scope and plan.
|
|
19
|
+
If a selected install lacks SDD, report that limit and use the documented
|
|
20
|
+
installation path within authorization; do not claim the skill ran.
|
|
21
|
+
Map each requirement to a sequential acceptance ID (`AC01`, `AC02`, …),
|
|
22
|
+
an observable check and the delivery layer that check establishes.
|
|
23
|
+
4. Review the contract before implementation. Record the existing owner
|
|
24
|
+
instruction as approval when it already covers the defined scope; do not
|
|
25
|
+
manufacture approval for an unresolved product/risk choice. Freeze the
|
|
26
|
+
reviewed revision using the project's hash convention.
|
|
27
|
+
5. For an end-to-end request, start the [autopilot loop](autopilot.md)
|
|
28
|
+
with those acceptance IDs. Planning and a generated spec are milestones.
|
|
29
|
+
Execute, verify, review where required, correct confirmed defects, and
|
|
30
|
+
continue to the requested delivery layer within existing authorization.
|
|
31
|
+
|
|
32
|
+
## Builder-readiness check
|
|
33
|
+
|
|
34
|
+
Before a large or risky multi-writer fan-out, assign one bounded read-only pass to
|
|
35
|
+
a native builder. Use MAIN when native workers are unavailable and disclose that
|
|
36
|
+
limit. Ask what would stop the first assigned unit from being implemented:
|
|
37
|
+
|
|
38
|
+
- a missing interface or caller;
|
|
39
|
+
- an unavailable tool;
|
|
40
|
+
- a conflicting scope or shared resource;
|
|
41
|
+
- an unresolved product decision;
|
|
42
|
+
- impossible proof for an acceptance criterion.
|
|
43
|
+
|
|
44
|
+
Return concrete blockers with source references and the affected unit or acceptance
|
|
45
|
+
ID. MAIN resolves routine choices within the request. Only material owner decisions
|
|
46
|
+
go to the existing single clarification round; do not start another requirements
|
|
47
|
+
round or ask the owner to settle routine code choices.
|
|
48
|
+
|
|
49
|
+
Skip this check for already-executable plans and mechanical changes. End after one
|
|
50
|
+
bounded pass. It does not authorize new scope or consequential effects, replace
|
|
51
|
+
required review, or demand elegance without a concrete implementation defect.
|
|
52
|
+
Keep findings in the current plan; do not create another tracker.
|
|
53
|
+
|
|
54
|
+
## Keep the contract and outcome connected
|
|
55
|
+
|
|
56
|
+
Keep one acceptance ledger. Link it from the spec when the project uses a
|
|
57
|
+
separate tracker. Record each ID's current evidence, remaining check or blocker;
|
|
58
|
+
do not copy mutable status into several files. Use the SDD lifecycle for the
|
|
59
|
+
overall spec state. Test completion does not silently accept a pending deploy.
|
|
60
|
+
|
|
61
|
+
Routine file-list and execution-order changes stay within the existing scope.
|
|
62
|
+
New behavior, risk, external effects or material acceptance changes require
|
|
63
|
+
the SDD change-control path. Preserve blocked criteria while unrelated work
|
|
64
|
+
advances. Never drop a requirement to make the ledger look complete.
|
|
65
|
+
|
|
66
|
+
Follow [communication](communication.md). English technical specs, procedures
|
|
67
|
+
and reports default to Writing's `TECHNICAL` mode unless another mode is
|
|
68
|
+
requested. Preserve the requested language and exact constraints.
|
|
69
|
+
A small diagram can explain dependencies; use an interactive artifact only
|
|
70
|
+
when interaction helps a real decision and the host supports it. Do not add
|
|
71
|
+
media, dependencies, paid calls or publication merely to make the output richer.
|
|
72
|
+
|
|
73
|
+
## Stop at the requested boundary
|
|
74
|
+
|
|
75
|
+
- **Spec only:** deliver the reviewed specification and actual approval state.
|
|
76
|
+
Do not implement it or mark product delivery `ACCEPTED`.
|
|
77
|
+
- **End to end:** finish all required acceptance IDs with inspected evidence,
|
|
78
|
+
then report the result, checks and remaining uncertainty.
|
|
79
|
+
- **Missing material decision:** name the exact choice and affected IDs; keep
|
|
80
|
+
useful independent work moving. Do not infer permission to publish or spend.
|
|
81
|
+
- **Session interruption:** checkpoint the existing tracker. A saved file alone
|
|
82
|
+
does not restart a client or provide an unattended execution service.
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# Long-run state and recovery
|
|
2
|
+
|
|
3
|
+
Read this reference only after Flow's detailed-ledger gate passes. It preserves
|
|
4
|
+
safe resume and delegated coordination without forcing machine ceremony into
|
|
5
|
+
ordinary single-session work.
|
|
6
|
+
|
|
7
|
+
## One canonical ledger
|
|
8
|
+
|
|
9
|
+
Use the project's existing Markdown tracker when suitable. Otherwise create one
|
|
10
|
+
small task-local Markdown artifact. It is the only mutable owner of execution state;
|
|
11
|
+
specifications define required truth, reports provide evidence, and the wiki
|
|
12
|
+
stores durable knowledge.
|
|
13
|
+
|
|
14
|
+
Record the run boundary once:
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
Run:
|
|
18
|
+
Frozen request/spec and fingerprint:
|
|
19
|
+
Base checkout and commit:
|
|
20
|
+
State owner:
|
|
21
|
+
Integration owner:
|
|
22
|
+
Owner gates:
|
|
23
|
+
Stop conditions:
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Use one row per independently auditable outcome, not per command:
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
ID | Outcome | Method | Owner/session | Dependencies | Write scope |
|
|
30
|
+
Proof | Owner gate | Status
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
`Method` is one primary owner: a NoBrainer skill, maintained project capability,
|
|
34
|
+
reviewed temporary capability or `DIRECT` for a truly mechanical step. Known
|
|
35
|
+
implementation, verification, correction, integration and closeout work must
|
|
36
|
+
appear before execution starts.
|
|
37
|
+
|
|
38
|
+
Useful states are `PENDING`, `READY`, `RUNNING`, `BLOCKED`, `REPORTED`,
|
|
39
|
+
`AUDITED`, `ACCEPTED`, `CORRECTION_REQUIRED`, `OWNER_DECISION_REQUIRED` and
|
|
40
|
+
`STOPPED`. A report or green
|
|
41
|
+
exit code cannot move a row to `ACCEPTED` without current proof.
|
|
42
|
+
|
|
43
|
+
The owner-facing Progress checklist is only a view of this ledger. Update both
|
|
44
|
+
from the same evidence at meaningful transitions.
|
|
45
|
+
|
|
46
|
+
## Durable goal and resume
|
|
47
|
+
|
|
48
|
+
When this reference is active, keep the portable goal in an existing Markdown
|
|
49
|
+
tracker or one task-local Markdown `GOAL_FILE`. Do not create a second mutable
|
|
50
|
+
status owner. The minimum readable block is:
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
GOAL_ID: <stable identity>
|
|
54
|
+
OUTCOME: <observable result>
|
|
55
|
+
NON_GOALS: <bounded exclusions>
|
|
56
|
+
DOD: <acceptance checks>
|
|
57
|
+
STATUS: ACTIVE | OWNER_DECISION_REQUIRED | COMPLETE | BLOCKED
|
|
58
|
+
CHECKPOINT: <last verified state and evidence pointer>
|
|
59
|
+
NEXT_SAFE_ACTION: <one action or NONE>
|
|
60
|
+
SESSION_POLICY: <policy reference or NONE>
|
|
61
|
+
LAST_HEALTH_READBACK: <event, result, evidence pointer>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The Markdown goal works without any native goal API. A host-native goal is an
|
|
65
|
+
optional mirror and control handle, used only when available and authorized by
|
|
66
|
+
the host's tool rules; never create it merely because this reference was loaded.
|
|
67
|
+
After session start, compaction or a verified clear, read `GOAL_FILE` from disk,
|
|
68
|
+
verify `GOAL_ID`, repository, checkout, HEAD/dirty state, status and evidence,
|
|
69
|
+
then reconcile any native goal actually used and continue from `NEXT_SAFE_ACTION`. A
|
|
70
|
+
transcript summary, cached plan or native goal never overrides newer file state.
|
|
71
|
+
The same file owns the outcome-level TODO rows; health gates may checkpoint them
|
|
72
|
+
but cannot mark work complete. On every material transition, update the current
|
|
73
|
+
row, evidence and next safe action before starting another unit.
|
|
74
|
+
|
|
75
|
+
## Recovery card
|
|
76
|
+
|
|
77
|
+
For unattended or resumable work, record:
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
Trigger and frozen inputs:
|
|
81
|
+
Expected outputs:
|
|
82
|
+
Checkpoint and resume command/path:
|
|
83
|
+
Idempotence key or duplicate-prevention rule:
|
|
84
|
+
Retry budget and blocker fingerprint:
|
|
85
|
+
Evidence location:
|
|
86
|
+
Rollback:
|
|
87
|
+
Attention budget and urgent owner events:
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Do not invent a retry path. If a step cannot be safely resumed or repeated,
|
|
91
|
+
state that before starting it and require the appropriate checkpoint or owner
|
|
92
|
+
gate.
|
|
93
|
+
|
|
94
|
+
At session start or after compaction, reconcile the exact checkout, base/HEAD,
|
|
95
|
+
dirty state, ledger fingerprint, active sessions/writers, last accepted proof
|
|
96
|
+
and next `READY` row. A stale summary never authorizes a successor.
|
|
97
|
+
|
|
98
|
+
## Bounded turns and runtime release
|
|
99
|
+
|
|
100
|
+
An outcome or goal may span bounded turns, but it never grants an unlimited
|
|
101
|
+
turn/session lease. Run `SESSION_HEALTH_GATE` at `START`, `AFTER_COMPACTION`,
|
|
102
|
+
`MATERIAL_TRANSITION` and `BEFORE_CLOSEOUT`. The policy is host/config supplied;
|
|
103
|
+
these are policy fields, not universal limits:
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
TURN_AGE_LIMIT: <configured value | NONE>
|
|
107
|
+
HISTORY_SIZE_LIMIT: <configured value | NONE>
|
|
108
|
+
COMPACTION_LIMIT: <configured value | NONE>
|
|
109
|
+
COST_OR_TOKENS_LIMIT: <configured value | NONE>
|
|
110
|
+
WARNING_THRESHOLD: <configured value | NONE>
|
|
111
|
+
HARD_THRESHOLD: <configured value | NONE>
|
|
112
|
+
SIGNALS: <turn age, history size, compactions, cost/tokens, owned workers>
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Each signal is a readback value, `UNKNOWN`, `UNSUPPORTED`, or `NONE` when no
|
|
116
|
+
limit is configured. Missing expected telemetry is not `HEALTHY`. Missing optional
|
|
117
|
+
telemetry lowers that proof claim but does not block safe work: use bounded work
|
|
118
|
+
units and the Markdown checkpoint. An explicitly required hard budget that cannot
|
|
119
|
+
be measured or enforced blocks only the work depending on that guarantee; report
|
|
120
|
+
the missing capability instead of claiming the cap holds. The gate
|
|
121
|
+
result is `HEALTHY | WARNING | ROTATE_REQUIRED | UNKNOWN | UNSUPPORTED`. A
|
|
122
|
+
warning checkpoints the goal/TODO and stops starting optional workers or large
|
|
123
|
+
new units while continuing the safe current unit. A hard limit means persist `GOAL_FILE`,
|
|
124
|
+
write a compact handoff, verify no write is in flight, and select:
|
|
125
|
+
|
|
126
|
+
```text
|
|
127
|
+
CLEAR_MODE: HOST_CLEAR | END_TURN | MANUAL_REQUIRED | UNSUPPORTED
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Use `HOST_CLEAR` only when the host advertises the capability and readback
|
|
131
|
+
proves the same goal file remains durable and no task-owned writer is active.
|
|
132
|
+
Otherwise end the turn or require manual action. Never claim a clear from a
|
|
133
|
+
command submission alone. Creating or rotating a session requires current or standing task authorization
|
|
134
|
+
under the Sessions startup contract; do not infer it from a timeout, compaction
|
|
135
|
+
or continued goal. Explicit Flow invocation activates assessment only; stricter host
|
|
136
|
+
consent requirements still apply.
|
|
137
|
+
|
|
138
|
+
`task_complete` closes an outcome only; it does not prove `RUNTIME_RELEASE`.
|
|
139
|
+
Record `RUNTIME_RELEASE` as `VERIFIED | NOT_RELEASED | UNKNOWN | UNSUPPORTED`.
|
|
140
|
+
Where the host can read back task-owned browser, tool or subprocess workers,
|
|
141
|
+
`VERIFIED` requires no owned worker remains. Active workers are
|
|
142
|
+
`NOT_RELEASED`; missing or unsupported readback lowers runtime proof and never
|
|
143
|
+
supports a clean-runtime claim.
|
|
144
|
+
|
|
145
|
+
An empty ready set is not itself a blocker. If work is `RUNNING`, wait for its
|
|
146
|
+
bounded result; if `REPORTED`, audit it; if all acceptance is met, finish. If all
|
|
147
|
+
unfinished work is blocked, record the blocker, owner and next unblock step;
|
|
148
|
+
use `OWNER_DECISION_REQUIRED` only when an actual owner decision is needed.
|
|
149
|
+
Do not invent work to keep a goal active.
|
|
150
|
+
|
|
151
|
+
## Team, queue and transport
|
|
152
|
+
|
|
153
|
+
Use one primary MAIN session. A native subagent with a returned ID, bounded task,
|
|
154
|
+
disjoint write scope and observable completion needs no new visible task or
|
|
155
|
+
persistent session registry. Audit its artifact and termination before integration.
|
|
156
|
+
Create a durable visible session only under the
|
|
157
|
+
[canonical rule](../SKILL.md#choose-the-smallest-workflow).
|
|
158
|
+
Use native subagents for delegated units; if unavailable, continue in MAIN.
|
|
159
|
+
For a persistent delegated queue:
|
|
160
|
+
|
|
161
|
+
1. `nobrainer-team` maps every independent ready unit to a bounded native assignment.
|
|
162
|
+
2. If several delegated units form a queue, `nobrainer-dispatcher` computes the
|
|
163
|
+
ready set and bounded batch.
|
|
164
|
+
3. MAIN spawns each bounded unit as a native subagent; only for owner-authorized
|
|
165
|
+
visible sessions does `nobrainer-sessions` create/reuse exact sessions, check
|
|
166
|
+
identity and writer state, and send each unit.
|
|
167
|
+
4. Dispatcher may record `READY -> SENT` only from the send receipt: the returned
|
|
168
|
+
native worker ID or Sessions' transport readback.
|
|
169
|
+
|
|
170
|
+
The queued transitions are `Team -> Dispatcher SCHEDULE -> native subagent spawn
|
|
171
|
+
-> Dispatcher DISPATCH` (default) and, for visible sessions:
|
|
172
|
+
|
|
173
|
+
`Team -> Dispatcher SCHEDULE -> Sessions setup/delegate -> Dispatcher DISPATCH`
|
|
174
|
+
|
|
175
|
+
On that path Sessions alone performs identity preflight and transport. On either
|
|
176
|
+
path Dispatcher never duplicates the send or treats a planned assignment as delivered.
|
|
177
|
+
|
|
178
|
+
A worker receives one outcome, inputs, exact write scope, proof, stop conditions
|
|
179
|
+
and report destination. It never chooses a successor.
|
|
180
|
+
|
|
181
|
+
When a worker reports, MAIN audits a native worker against its returned ID, and
|
|
182
|
+
Sessions performs `RECEIVE_AUDIT` for a visible session, against the exact worker,
|
|
183
|
+
host, checkout, commit, diff, tests, evidence and released writer state.
|
|
184
|
+
If Dispatcher owns the queue, its reconcile step consumes that audited result
|
|
185
|
+
before releasing dependencies.
|
|
186
|
+
|
|
187
|
+
## Failure and correction
|
|
188
|
+
|
|
189
|
+
- Unknown dependency, identity, write ownership or lease state is `BLOCKED`.
|
|
190
|
+
- A changed owner decision supersedes the old requirement, stops affected
|
|
191
|
+
not-started rows and invalidates dependent proof.
|
|
192
|
+
- A verified review finding becomes `CORRECTION_REQUIRED` and returns to Build.
|
|
193
|
+
- A repeated blocker keeps one stable fingerprint; retry only after a changed
|
|
194
|
+
condition or new evidence.
|
|
195
|
+
- Timeout, dead session, partial output and retry exhaustion preserve the row as
|
|
196
|
+
incomplete.
|
|
197
|
+
|
|
198
|
+
Close the ledger only when every required row is `ACCEPTED` or explicitly
|
|
199
|
+
`STOPPED` by a superseding owner decision, all writers are released, final proof
|
|
200
|
+
is current and rollback is still intelligible.
|
|
201
|
+
|
|
202
|
+
## Adaptive fresh-session continuation
|
|
203
|
+
|
|
204
|
+
For owner-enabled `session-restart`, reuse this goal and its progress rows.
|
|
205
|
+
Sessions owns the [restart protocol](../../nobrainer-sessions/references/session-restart.md):
|
|
206
|
+
quiet milestone assessment, compact checkpoint, verified fresh target, conditional
|
|
207
|
+
ownership transfer and source archive after takeover. A stale summary or timer
|
|
208
|
+
does not authorize a successor. Keep model policy, pending operations and native
|
|
209
|
+
goal/scheduler ownership in the handoff; do not create another status owner.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Model policy and routing
|
|
2
|
+
|
|
3
|
+
`nobrainer-tech-flow` owns the model policy. This contract is portable:
|
|
4
|
+
clients may execute it, expose a model choice, or report `UNSUPPORTED`;
|
|
5
|
+
no provider is assumed. A model name, manifest or default setting is not
|
|
6
|
+
runtime proof.
|
|
7
|
+
|
|
8
|
+
MAIN keeps the model and effort selected by the user in every client. Use the
|
|
9
|
+
[Codex adapter](codex-routing.md) only for Codex-specific capability discovery,
|
|
10
|
+
not as a universal model preset. Client detection and model availability
|
|
11
|
+
require readback. Use [Auto Fine Tune](../../nobrainer-auto-fine-tune/SKILL.md)
|
|
12
|
+
when repeated work warrants measured route calibration.
|
|
13
|
+
|
|
14
|
+
## Freeze one policy before work
|
|
15
|
+
|
|
16
|
+
Record the policy in the canonical plan and copy it into each delegated work
|
|
17
|
+
unit. Use the smallest policy that meets the acceptance bar:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
MODEL_POLICY: STANDARD | EXTENDED | ROUTED
|
|
21
|
+
MODEL: HOST_SELECTED | <exact supported id> | UNKNOWN
|
|
22
|
+
EFFORT: DEFAULT | <exact supported setting> | UNKNOWN
|
|
23
|
+
BUDGET: tokens=<n>; time=<duration>; cost=<limit> | UNKNOWN
|
|
24
|
+
ESCALATION: NONE | PROPOSE | OWNER_APPROVAL
|
|
25
|
+
ROUTE_REASON: <risk, complexity, latency or evidence reason>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- If no policy is supplied, keep the owner- or host-selected MAIN model.
|
|
29
|
+
Use `STANDARD` for a clear one-unit task or a client without native
|
|
30
|
+
workers. Use `ROUTED` by default for substantial work with useful
|
|
31
|
+
independent units and verified native worker support.
|
|
32
|
+
- `STANDARD` uses the owner- or host-selected model and effort. It is the fallback
|
|
33
|
+
for small work, unavailable native workers or one-model hosts. Unknown capacity
|
|
34
|
+
permits bounded incremental dispatch under the delivery contract.
|
|
35
|
+
- `EXTENDED` keeps that identity while allowing a larger declared
|
|
36
|
+
effort, context, time or cost budget and bounded extra verification. A
|
|
37
|
+
stronger model is an explicit policy change with an exact model and gate; it
|
|
38
|
+
is never a hidden retry.
|
|
39
|
+
- `ROUTED` is the bounded default for useful parallel work: it selects a
|
|
40
|
+
capable worker for each independent unit from models the host actually
|
|
41
|
+
exposes. Prefer a smaller, quicker route when the task's acceptance can
|
|
42
|
+
still be met. Record the exact model, effort and budget
|
|
43
|
+
before dispatch. If the target is unavailable, use an already verified
|
|
44
|
+
capable worker route within the same authority or continue in MAIN; report
|
|
45
|
+
the degraded mode. An uncertain send must be reconciled before retry.
|
|
46
|
+
|
|
47
|
+
## Routing heuristics
|
|
48
|
+
|
|
49
|
+
These heuristics choose a worker route; they do not gate eligible dispatch under
|
|
50
|
+
[team execution](delivery.md#coordinated-team-execution).
|
|
51
|
+
|
|
52
|
+
- For each independent ready unit, choose a smaller or faster worker only when
|
|
53
|
+
the current host advertises it, the assignment accepts it, and the expected
|
|
54
|
+
setup plus audit cost is lower than the critical-path benefit. Use measured
|
|
55
|
+
cost and latency when available; otherwise mark them unknown.
|
|
56
|
+
- Default to useful native parallelism when the task splits cleanly. A second
|
|
57
|
+
perspective may catch defects, and a smaller worker may avoid repeating
|
|
58
|
+
MAIN's full context. These are mechanisms to evaluate, not universal
|
|
59
|
+
measured improvements in quality, speed or token use.
|
|
60
|
+
- Use the host-selected/default capable model for ordinary implementation;
|
|
61
|
+
routine units get the lowest effort that still meets acceptance.
|
|
62
|
+
- Give every worker the same shared assignment prefix with the unit-specific
|
|
63
|
+
part last; prompt-cache reuse from this is plausible but unmeasured.
|
|
64
|
+
- Request a stronger tier only when ambiguity, security, architecture, failed
|
|
65
|
+
proof or a declared quality bar justifies its added budget.
|
|
66
|
+
- Delegate disjoint research, implementation and review units proactively
|
|
67
|
+
when useful. Use the maximum verified *useful* concurrency up to the host
|
|
68
|
+
limit, with one exact write owner per file. MAIN integrates results while
|
|
69
|
+
workers run. Pass the frozen policy to each worker; it cannot choose a
|
|
70
|
+
successor, recursively delegate or escalate itself without assignment authority.
|
|
71
|
+
- A unit that reaches its `BUDGET` stops and reports partial results.
|
|
72
|
+
Escalate only when new evidence changes the cost or acceptance decision.
|
|
73
|
+
State the blocker, target tier, expected benefit, added budget and approval
|
|
74
|
+
gate before starting the next attempt.
|
|
75
|
+
|
|
76
|
+
## Proof and limits
|
|
77
|
+
|
|
78
|
+
Record `MODEL_REQUESTED`, `MODEL_ACTUAL`,
|
|
79
|
+
`EFFORT`, budget and provider/client version when the host exposes
|
|
80
|
+
them. `UNKNOWN` or `UNSUPPORTED` keeps the runtime claim
|
|
81
|
+
`UNVERIFIED`. This is a portable policy, not a cross-provider model
|
|
82
|
+
gateway; a client may implement `ROUTED`, but the skills cannot claim
|
|
83
|
+
automatic switching until a clean runtime readback proves it.
|