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,117 @@
|
|
|
1
|
+
# Move to nobrainer-tech-flow
|
|
2
|
+
|
|
3
|
+
Version **1.7.1** introduced an earlier display spelling.
|
|
4
|
+
The current display name is **nobrainer-tech-flow**; the repository,
|
|
5
|
+
public package/plugin identity and entry skill are `nobrainer-tech-flow`.
|
|
6
|
+
**From task to done.** Tell it what you need. nobrainer-tech-flow clarifies the goal,
|
|
7
|
+
does the work, and checks the result.
|
|
8
|
+
|
|
9
|
+
The canonical public repository identity is
|
|
10
|
+
[`nobrainer-tech/nobrainer-tech-flow`](https://github.com/nobrainer-tech/nobrainer-tech-flow)
|
|
11
|
+
and the product website is [nobrainer.tech/flow](https://nobrainer.tech/flow/).
|
|
12
|
+
The earlier 1.7.1 rename changed display/source routing. The 2.0.0
|
|
13
|
+
upgrade also changes the entry skill and public package/plugin identities.
|
|
14
|
+
Done still means the agreed criteria are met and the result is checked; missing
|
|
15
|
+
access or an unresolved decision can require an explicit unblock action.
|
|
16
|
+
|
|
17
|
+
## Existing installation identities
|
|
18
|
+
|
|
19
|
+
The table below records the previous package identity for migration. Existing
|
|
20
|
+
registrations must be updated deliberately; a second package next to the old
|
|
21
|
+
one can cause duplicate routing.
|
|
22
|
+
|
|
23
|
+
| Surface | Previous identifier and migration |
|
|
24
|
+
|---|---|
|
|
25
|
+
| Existing package and Claude Code, Codex, Cursor, Kimi, Gemini and portable plugin IDs | `nobrainer-tech-skills` -> `nobrainer-tech-flow` after exact client readback |
|
|
26
|
+
| New public repository/package channel | `nobrainer-tech-flow` |
|
|
27
|
+
| Claude Code marketplace name | `nobrainer-tech` |
|
|
28
|
+
| Codex marketplace name | `nobrainer-tech-skills-dev` -> `nobrainer-tech` in 2.4.0 |
|
|
29
|
+
| OpenCode package entry prefix | `nobrainer-tech-skills@git+` -> `nobrainer-tech-flow@git+` at a reviewed immutable ref |
|
|
30
|
+
| OpenCode adapter module | `.opencode/plugins/nobrainer-tech-skills.js` |
|
|
31
|
+
| Pi extension module | `.pi/extensions/nobrainer-tech-skills.js` |
|
|
32
|
+
| Shared bootstrap marker | `NOBRAINER_BOOTSTRAP_V1` |
|
|
33
|
+
| Technical entrypoint and compatibility aliases | `$nobrainer-ultra` -> `$nobrainer-tech-flow`; old triggers are recognized only for migration |
|
|
34
|
+
|
|
35
|
+
If you added the Codex marketplace under its old name, remove it and add the
|
|
36
|
+
repository again; otherwise the old and new plugin stay enabled side by side:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
codex plugin remove nobrainer-tech-flow@nobrainer-tech-skills-dev
|
|
40
|
+
codex plugin marketplace remove nobrainer-tech-skills-dev
|
|
41
|
+
codex plugin marketplace add nobrainer-tech/nobrainer-tech-flow # or your reviewed checkout path
|
|
42
|
+
codex plugin add nobrainer-tech-flow@nobrainer-tech
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The previous skill directory list is historical. The reviewed migration renames
|
|
46
|
+
the entry skill and adds the calibration skill; do not overwrite a foreign
|
|
47
|
+
installed target to force the migration.
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
nobrainer-ultra
|
|
51
|
+
nobrainer-team
|
|
52
|
+
nobrainer-dispatcher
|
|
53
|
+
nobrainer-research
|
|
54
|
+
nobrainer-writing
|
|
55
|
+
nobrainer-build
|
|
56
|
+
nobrainer-security
|
|
57
|
+
nobrainer-sessions
|
|
58
|
+
nobrainer-spec-driven-development
|
|
59
|
+
nobrainer-wiki
|
|
60
|
+
nobrainer-browser
|
|
61
|
+
nobrainer-autoimprove
|
|
62
|
+
nobrainer-decide
|
|
63
|
+
nobrainer-rca
|
|
64
|
+
nobrainer-review
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
These are frozen predecessor identities. Do not rewrite their old release
|
|
68
|
+
records. Current public installation has eighteen skills, including
|
|
69
|
+
`nobrainer-tech-flow` and `nobrainer-auto-fine-tune`.
|
|
70
|
+
|
|
71
|
+
## Update the source in place
|
|
72
|
+
|
|
73
|
+
Use the client's supported upgrade mechanism. In OpenCode, change the old
|
|
74
|
+
package prefix to `nobrainer-tech-flow@git+` and use an immutable reviewed
|
|
75
|
+
commit pin. In plugin hosts, inspect the installed old ID and the new
|
|
76
|
+
registration before retiring anything; a new ID can coexist with the old
|
|
77
|
+
one and cause duplicate routing. Do not delete an unverified foreign target.
|
|
78
|
+
|
|
79
|
+
Existing local checkouts can keep their directory names. Installed symlinks may
|
|
80
|
+
point into that directory, so moving it is unnecessary. After confirming that
|
|
81
|
+
`origin` is this project's remote, its URL can be updated in place:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
git remote set-url origin https://github.com/nobrainer-tech/nobrainer-tech-flow.git
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
The [current installation examples](INSTALL.md) require an exact reviewed
|
|
88
|
+
commit, validation and installer dry-run. `install_skills.py --migrate-legacy`
|
|
89
|
+
handles only a verified old symlink owned by the same checkout; a copied or
|
|
90
|
+
foreign old installation needs separate exact readback and a scoped migration.
|
|
91
|
+
The old path is never deleted merely because the new skill was installed.
|
|
92
|
+
|
|
93
|
+
The Reddit integration was retired from Flow. `install_skills.py`, its Python/npm
|
|
94
|
+
callers and `install.sh` preserve foreign `nobrainer-reddit` files, directories
|
|
95
|
+
and symlinks without blocking installation. The skill helper and shell installer
|
|
96
|
+
print `PRESERVED_FOREIGN`. Exact old links owned by this checkout still block
|
|
97
|
+
until migrated with `install_skills.py --migrate-legacy`. Foreign renamed aliases
|
|
98
|
+
such as `nb-flow` and unresolved legacy names still block installation to prevent
|
|
99
|
+
trigger conflicts.
|
|
100
|
+
|
|
101
|
+
After an update, read back the source commit and package identity, restart the
|
|
102
|
+
client and confirm that `nobrainer-tech-flow` loads once. A version change or an
|
|
103
|
+
installed file alone does not establish runtime compatibility.
|
|
104
|
+
|
|
105
|
+
## Old links and evidence
|
|
106
|
+
|
|
107
|
+
The previous repository name is `nobrainer-tech/nobrainer-tech-skills` and the
|
|
108
|
+
previous website route is `/skills/`. Their redirects, including corresponding
|
|
109
|
+
deep links under `/flow/`, are separate publication checks. Do not remove an old
|
|
110
|
+
installation or rewrite historical evidence to compensate for a missing redirect.
|
|
111
|
+
|
|
112
|
+
Tagged releases, dated reviews, frozen evaluation payloads and their source hashes
|
|
113
|
+
retain the original names and links as provenance. This rename adds no model
|
|
114
|
+
performance, token-savings or cross-client runtime claim. See the
|
|
115
|
+
[1.7.1 release record](releases/v1.7.1.md) for the local verification boundary;
|
|
116
|
+
repository rename, website redirects and client update readback must be verified
|
|
117
|
+
in their own systems.
|
package/docs/NAMING.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# nobrainer-tech-flow naming
|
|
2
|
+
|
|
3
|
+
This map separates the public product language from compatibility and source
|
|
4
|
+
identifiers. It is the canonical naming reference for maintained copy.
|
|
5
|
+
|
|
6
|
+
| Class | Use | Rule |
|
|
7
|
+
| --- | --- | --- |
|
|
8
|
+
| Product | nobrainer-tech-flow | Use this exact name in user-facing prose, status, headings and display copy. |
|
|
9
|
+
| Public repository/package channel | `nobrainer-tech-flow` | Use in repository links, new checkout paths and public source URLs. |
|
|
10
|
+
| Workflow skills | `nobrainer-build`, `nobrainer-research`, `nobrainer-review`, etc. | Name the specific skill when it explains which part of the workflow is doing the work. Preserve its exact lowercase kebab-case name and inline-code formatting. |
|
|
11
|
+
| Assistant conversation label | nobrainer-tech-flow | Do not open with a ritual entry announcement; mention the product or a specific skill only when it helps explain an action, constraint or result. |
|
|
12
|
+
| X hashtag | `#NoBrainerTechFlow` | Use this punctuation-free form when a real hashtag is useful. A hyphen ends an X hashtag, so never publish `#nobrainer-tech-flow` as the tag. |
|
|
13
|
+
| Legacy display name | Former display spellings | Preserve only in historical release evidence and compatibility metadata. Do not use it as the current product name in new prose. |
|
|
14
|
+
| Technical entry skill | `nobrainer-tech-flow` | Use for the skill directory, frontmatter name, installer target and the Codex entrypoint: `$nobrainer-tech-flow:nobrainer-tech-flow` where Codex lists the module under the plugin name, `$nobrainer-tech-flow` where it lists it plainly. |
|
|
15
|
+
| Retired entry name | `nobrainer-ultra` | Recognize only in migration notes for existing installations. Never direct a new user to invoke it. |
|
|
16
|
+
| Active phrases | `NBFlow`, `NBF`, `nobrainer-tech-flow` | Use in natural-language requests. Exact skill loading is the name the client lists for the module (in Codex `$nobrainer-tech-flow:nobrainer-tech-flow` or `$nobrainer-tech-flow`) when the client supports it; do not create alias directories. |
|
|
17
|
+
| Retired aliases | `nb-ultra`, `nb-flow`, `nb-workflow` | Preserve only in migration records for older installations. |
|
|
18
|
+
| Public package/plugin identity | `nobrainer-tech-flow` | Use in new package manifests, plugin IDs and installation examples. |
|
|
19
|
+
| Legacy package identity | `nobrainer-tech-skills` | Preserve only in migration guidance and old adapter module paths; update existing client registrations explicitly. |
|
|
20
|
+
| Historical evidence | Prior product/package forms | Keep in dated releases, evaluations, hashes and frozen fixtures when changing them would rewrite provenance. |
|
|
21
|
+
|
|
22
|
+
## Propagation plan
|
|
23
|
+
|
|
24
|
+
The canonical source is updated first. Existing repository copies are then
|
|
25
|
+
handled through the reviewed synchronization workflow after the source change
|
|
26
|
+
is approved:
|
|
27
|
+
|
|
28
|
+
1. inventory current consumer instruction files before propagation;
|
|
29
|
+
2. classify each occurrence as maintained public text, technical identifier or
|
|
30
|
+
historical evidence;
|
|
31
|
+
3. update only maintained public text and preserve managed blocks, local rules,
|
|
32
|
+
paths, aliases and technical identifiers;
|
|
33
|
+
4. preview exact diffs and require per-repository dirty-state readback;
|
|
34
|
+
5. apply through canonical synchronization, then run each repository's nearest
|
|
35
|
+
validator and record any owner-gated or conflicting checkout.
|
|
36
|
+
|
|
37
|
+
This PR changes the canonical source. Install and personalize clients only
|
|
38
|
+
after the owner reviews it; keep live client directories and caches untouched
|
|
39
|
+
until the exact reviewed release is available.
|
package/docs/PRIVACY.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Privacy for the nobrainer-tech-flow plugin
|
|
2
|
+
|
|
3
|
+
nobrainer-tech-flow distributes MIT-licensed skills, reference documents and local helpers. The package has no publisher-operated backend, telemetry or account requirement. Installing this plugin does not transmit your conversation, files or credentials to NoBrainer Tech.
|
|
4
|
+
|
|
5
|
+
Your AI client processes your task and may use its own tools under its permissions and privacy settings. Requested research can contact external sources. The optional release checker reads public GitHub release metadata; GitHub receives the ordinary network request. Optional Jev and Laya decision profiles remain off until you enable them with the required data and cost authority.
|
|
6
|
+
|
|
7
|
+
The npm installer writes local release files and managed client configuration only with an explicit --apply flag. Review the preview before applying. Its undo preserves unrelated files. Release files retained for stable installation are documented in INSTALL.md.
|
|
8
|
+
|
|
9
|
+
For questions or source issues, use https://github.com/nobrainer-tech/nobrainer-tech-flow/issues. Do not include private task data or credentials in public issues. The selected AI client's own terms and privacy policy govern that client's processing.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Adaptive session restart
|
|
2
|
+
|
|
3
|
+
Automatic Flow startup care has shipped since v1.10.0 on top of the v1.8.1
|
|
4
|
+
restart protocol.
|
|
5
|
+
|
|
6
|
+
Invoke nobrainer-tech-flow with resumable, long or delegated work. Flow runs startup
|
|
7
|
+
naming and health assessment without a separate restart command; the quick path
|
|
8
|
+
skips it. Flow entry enables observation only: restarting MAIN or archiving needs
|
|
9
|
+
separately recorded owner consent. It preserves an existing `off` policy and obeys
|
|
10
|
+
stricter host consent rules. Installation or incidental skill loading alone authorizes no mutation.
|
|
11
|
+
Explicit automatic-restart consent remains valid for later rotations in scope;
|
|
12
|
+
archival needs its own recorded authorization. Ordinary delegation uses native
|
|
13
|
+
subagents; creating a separate visible conversation requires an explicit owner
|
|
14
|
+
request or an explicitly authorized MAIN restart.
|
|
15
|
+
|
|
16
|
+
On entry, supported clients name the session `<task title> | started DD-MM` using
|
|
17
|
+
its actual creation timestamp and owner/task timezone (recorded UTC fallback).
|
|
18
|
+
Resume preserves that date; a successor receives its own creation date. Missing
|
|
19
|
+
metadata is unavailable, never replaced with today's date. Supported mutations
|
|
20
|
+
are read back. Session IDs, goal identity and checkpoint digest remain authoritative.
|
|
21
|
+
|
|
22
|
+
Flow assesses available context measurements and the complete next startup,
|
|
23
|
+
including required skills, metadata, tools, checkpoint and necessary re-reads.
|
|
24
|
+
It records measured versus estimated inputs and keeps missing values unknown.
|
|
25
|
+
The agent performs the check at entry, after compaction and accepted milestones;
|
|
26
|
+
there is no new daemon or timer-only model call.
|
|
27
|
+
|
|
28
|
+
Health and economic benefit are independent reasons to rotate. A current pressure
|
|
29
|
+
signal or at least 70% observed context occupancy, together with a complete fresh
|
|
30
|
+
startup at most 80% of current input, qualifies the health path. Those are policy
|
|
31
|
+
heuristics, not measured optima. Remaining work, progress since the last restart,
|
|
32
|
+
verified checkpoint and safe native ownership transfer are still required.
|
|
33
|
+
Two compactions and optional daily age of 24 hours trigger assessment only.
|
|
34
|
+
A small post-compaction context or equally large startup can make continuing wiser.
|
|
35
|
+
|
|
36
|
+
Routine care stays quiet. Report one successful continuation or an actionable
|
|
37
|
+
capability failure. After takeover, compare observed startup and missing-context
|
|
38
|
+
rework with the estimate in the same task state.
|
|
39
|
+
|
|
40
|
+
The core is the [Sessions protocol](../skills/nobrainer-sessions/references/session-restart.md),
|
|
41
|
+
usable as instructions in any capable client. An optional deterministic helper
|
|
42
|
+
can be invoked by hooks. There is no universal hook event or universal archive
|
|
43
|
+
API: adapters must verify capabilities and map their actual lifecycle events.
|
|
44
|
+
A client without safe native transport prepares a manual continuation packet.
|
|
45
|
+
|
|
46
|
+
For the independent economic path, the helper calculates a conservative raw token proxy over at most three future
|
|
47
|
+
calls. Its defaults are heuristics, not an optimum or a billing forecast. Current
|
|
48
|
+
input, fresh startup and restart overhead can be observations or explicitly
|
|
49
|
+
labelled estimates. Missing metrics remain unknown. Large fixed instructions,
|
|
50
|
+
cache reuse and necessary re-reads may make restarting more expensive.
|
|
51
|
+
|
|
52
|
+
Quality is protected by checking the handoff before transfer, not by assuming
|
|
53
|
+
fresh sessions are smarter. Do not restart if acceptance, decisions or required
|
|
54
|
+
evidence cannot be reconstructed reliably. Do not archive the old session after
|
|
55
|
+
mere creation or a read-only ACK. Verify takeover first; archive failure never
|
|
56
|
+
returns implementation ownership to the old session.
|
|
57
|
+
|
|
58
|
+
## Proof and remaining limits
|
|
59
|
+
|
|
60
|
+
The shipped helper is tested with real CLI invocations and deterministic failure
|
|
61
|
+
cases. It only chooses actions from supplied observations. It does not collect
|
|
62
|
+
usage, authenticate an ACK, implement a lock, run a model, create sessions or
|
|
63
|
+
archive them. Native transport requires separate adapter runtime evidence.
|
|
64
|
+
No all-client automation, token-saving percentage or quality improvement has
|
|
65
|
+
been measured for this feature.
|
|
66
|
+
|
|
67
|
+
No new permanent module, scheduler, background service or global hook is added.
|
|
68
|
+
Existing `nobrainer-sessions`, `session-handoff` and manual recovery stay available.
|
|
69
|
+
Disable further rotation with policy `off`; a committed transfer never permits
|
|
70
|
+
both old and new sessions to resume writing.
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Skill curation
|
|
2
|
+
|
|
3
|
+
The active product is deliberately small enough to understand and broad enough
|
|
4
|
+
to run a non-trivial project from intent to verified outcome. A skill belongs in
|
|
5
|
+
the permanent suite only when it owns a recurring cross-project boundary that
|
|
6
|
+
cannot live clearly inside another owner.
|
|
7
|
+
|
|
8
|
+
## Admission test
|
|
9
|
+
|
|
10
|
+
A permanent skill must pass every condition:
|
|
11
|
+
|
|
12
|
+
1. It has a distinct trigger and observable result.
|
|
13
|
+
2. It is useful across projects without private paths or accounts; any client-specific capability has an explicit compatibility boundary.
|
|
14
|
+
3. Loading it only when triggered saves more context and risk than embedding its
|
|
15
|
+
full protocol in Flow.
|
|
16
|
+
4. Its behavior is not already owned by another active skill or a maintained
|
|
17
|
+
project/native capability.
|
|
18
|
+
5. Its failure, stop, owner-gate and rollback behavior can be tested.
|
|
19
|
+
6. It has a pressure scenario showing value and a non-trigger case preventing
|
|
20
|
+
overuse.
|
|
21
|
+
|
|
22
|
+
Popularity, file size and prior existence are not admission criteria.
|
|
23
|
+
|
|
24
|
+
## Active eighteen
|
|
25
|
+
|
|
26
|
+
| Skill | Distinct owner |
|
|
27
|
+
|---|---|
|
|
28
|
+
| `nobrainer-tech-flow` | One request through brief requirements, concise progress, guarded execution, audit, recovery and learning. |
|
|
29
|
+
| `nobrainer-team` | Capability selection and bounded native assignments, installed capability inventory and safe temporary specialist discovery. |
|
|
30
|
+
| `nobrainer-dispatcher` | Ready-set calculation, dependency-aware bounded batches, backpressure and audited result routing. |
|
|
31
|
+
| `nobrainer-research` | Bounded current external research and source-quality/freshness control. |
|
|
32
|
+
| `nobrainer-writing` | High-signal drafting, compression, voice and prose integrity across human-facing text artifacts. |
|
|
33
|
+
| `nobrainer-build` | Implementation, engineering principles, anti-slop, test blast radius and simplification. |
|
|
34
|
+
| `nobrainer-security` | Threat model, security review, supply-chain inspection and security release evidence. |
|
|
35
|
+
| `nobrainer-sessions` | Exact visible session identity, transport, writer ownership, handoff, receive-audit and recovery. |
|
|
36
|
+
| `nobrainer-spec-driven-development` | Durable behavior contract and acceptance ledger when risk/dependencies justify it. |
|
|
37
|
+
| `nobrainer-wiki` | Setup, targeted retrieval, sourced capture and deterministic maintenance of durable knowledge. |
|
|
38
|
+
| `nobrainer-browser` | Rendered UI, bounded CDP profile restart, approved browser-session attach, browser tests and trace evidence. |
|
|
39
|
+
| `nobrainer-autoimprove` | Measured artifact improvement with baseline, holdout, budget and keep-or-revert. |
|
|
40
|
+
| `nobrainer-auto-fine-tune` | Calibrates native worker routes against verified host capability, quality, latency and cost evidence while MAIN retains the owner's model. |
|
|
41
|
+
| `nobrainer-decide` | One consequential decision after alternatives, scoring and adversarial attack. |
|
|
42
|
+
| `nobrainer-rca` | Read-only causal diagnosis of an observed failure. |
|
|
43
|
+
| `nobrainer-review` | Final acceptance/bug/release evidence gate and verified actionable findings. |
|
|
44
|
+
| `nobrainer-codex-context` | Project-local Codex instruction discovery, byte-budget audit, safe context-block setup and runtime readback. |
|
|
45
|
+
| `nobrainer-skill-doctor` | Cross-project audit of skills, project instructions and task prompts, with coverage, overlap and minimal portfolio repair planning. |
|
|
46
|
+
|
|
47
|
+
## Boundaries that stay embedded
|
|
48
|
+
|
|
49
|
+
Do not create separate permanent skills for:
|
|
50
|
+
|
|
51
|
+
- planning, autopilot, general NoBrainer setup or correction capture: the Flow entry skill owns the lifecycle; Codex-specific project-context setup belongs to `nobrainer-codex-context`;
|
|
52
|
+
- visible goal/TODO progress: Flow owns one canonical plan and its compact view;
|
|
53
|
+
do not add a separate goal, todo or progress skill;
|
|
54
|
+
- KISS, DRY, SOLID, YAGNI, simplification or test safety: Build owns them;
|
|
55
|
+
- brand-specific voice facts belong in a project guide or wiki; Writing owns the
|
|
56
|
+
portable prose method and can consume an authentic supplied voice sample;
|
|
57
|
+
- generic code review, bug finding or release ceremony: Review owns the close
|
|
58
|
+
gate, while Security owns only material trust-boundary risk;
|
|
59
|
+
- human continuation snapshots: Sessions mode `handoff` owns them;
|
|
60
|
+
- a local skill catalogue: Team builds a metadata-only capability index;
|
|
61
|
+
- wiki add/get/tidy wrappers: Wiki exposes explicit modes;
|
|
62
|
+
- personal model presets, accounts or repository-specific configuration: keep
|
|
63
|
+
them in project/private instructions. A named host integration must justify
|
|
64
|
+
its recurring boundary and state its compatibility limits.
|
|
65
|
+
|
|
66
|
+
## Dynamic specialist policy
|
|
67
|
+
|
|
68
|
+
Team resolves a capability gap in this order:
|
|
69
|
+
|
|
70
|
+
1. curated NoBrainer skill;
|
|
71
|
+
2. already installed and inspected specialist;
|
|
72
|
+
3. maintained project/API/CLI/native capability;
|
|
73
|
+
4. bounded current research;
|
|
74
|
+
5. temporary external skill discovered for the exact missing capability.
|
|
75
|
+
|
|
76
|
+
External instructions are untrusted. Search rank does not authorize install,
|
|
77
|
+
scripts, credentials, network access or writes. Review immutable source/ref,
|
|
78
|
+
license, permissions, trigger overlap, persistence and rollback. Persistent or
|
|
79
|
+
global installation requires an owner gate and evidence that repeated use earns
|
|
80
|
+
the added trigger/context surface.
|
|
81
|
+
|
|
82
|
+
## Retirement test
|
|
83
|
+
|
|
84
|
+
A skill can be removed only after:
|
|
85
|
+
|
|
86
|
+
- its unique behavior is intentionally preserved or explicitly rejected;
|
|
87
|
+
- inbound references and aliases are migrated;
|
|
88
|
+
- the replacement is installed and discovered in a clean session;
|
|
89
|
+
- representative old invocations route to the replacement;
|
|
90
|
+
- rollback points to an exact reviewed ref;
|
|
91
|
+
- no private operational contract is confused with a portable semantic
|
|
92
|
+
duplicate.
|
|
93
|
+
|
|
94
|
+
Same name or broad topic is not proof of duplication. Until the above gates
|
|
95
|
+
pass, classify candidates as `COVERED_NOT_RETIRED`, `PROJECT_SPECIFIC`,
|
|
96
|
+
`UNIQUE_VALUE`, `OBSOLETE_WITH_EVIDENCE` or `UNKNOWN`.
|
|
97
|
+
|
|
98
|
+
`nobrainer-fast-audit` is currently `UNKNOWN`, not a migration alias. Its exact
|
|
99
|
+
contract and callers must be audited before choosing Review, Security or another
|
|
100
|
+
owner. Keep an existing private installation unchanged until that audit and a
|
|
101
|
+
clean-session parity check pass; the public installer must report it as a normal
|
|
102
|
+
conflict rather than delete or silently remap it.
|
|
103
|
+
|
|
104
|
+
`nobrainer-reddit` is `RETIRED`: the
|
|
105
|
+
[portable-workflow curation](https://github.com/nobrainer-tech/nobrainer-tech-flow/commit/955de2a5cba72f86a9941a15c6ad9aa6b42c76d4)
|
|
106
|
+
removed the Reddit CLI as a client/account integration; no active skill owns its
|
|
107
|
+
functionality or trigger. `install_skills.py` and `install.sh` preserve foreign
|
|
108
|
+
targets at that name with `PRESERVED_FOREIGN`. Only exact old links from this
|
|
109
|
+
checkout remain migration candidates. Renamed/absorbed aliases retain blocking
|
|
110
|
+
conflict checks.
|
|
111
|
+
|
|
112
|
+
## Change control
|
|
113
|
+
|
|
114
|
+
Any addition, merge or retirement updates together:
|
|
115
|
+
|
|
116
|
+
- `skills/`, aliases and installer migrations;
|
|
117
|
+
- validator and behavioral tests;
|
|
118
|
+
- Flow routing and setup instructions;
|
|
119
|
+
- README, compatibility and release notes;
|
|
120
|
+
- clean-session trigger/readback evidence.
|
|
121
|
+
|
|
122
|
+
Prefer strengthening an existing owner over creating a new noun. Do not keep an
|
|
123
|
+
empty alias skill for compatibility; aliases belong in descriptions and
|
|
124
|
+
migration maps.
|
package/docs/TESTING.md
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# Testing and evaluation
|
|
2
|
+
|
|
3
|
+
The repository uses four evidence layers. A green lower layer never proves a
|
|
4
|
+
higher one.
|
|
5
|
+
|
|
6
|
+
## 1. Structure and public safety
|
|
7
|
+
|
|
8
|
+
- portable frontmatter, directory/name identity and exact active inventory;
|
|
9
|
+
- relative companion links and retired-name exclusion;
|
|
10
|
+
- public-clean text, manifest parsing and version consistency;
|
|
11
|
+
- installer conflict refusal, foreign retired-name preservation, exact legacy
|
|
12
|
+
migration, idempotence, readback, race-safe atomic restore and
|
|
13
|
+
preserved migration/rollback recovery claims;
|
|
14
|
+
- secret scanning before publication.
|
|
15
|
+
|
|
16
|
+
Run:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
python3 scripts/validate_skills.py
|
|
20
|
+
python3 scripts/validate_skills.py --suite
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 2. Deterministic behavior contracts
|
|
24
|
+
|
|
25
|
+
Unit tests pressure the routing, model-policy and safety invariants that can be
|
|
26
|
+
checked without an LLM: Flow states, bounded-turn `SESSION_HEALTH_GATE`,
|
|
27
|
+
checkpoint/end-turn decisions, separate `RUNTIME_RELEASE`, session identity and
|
|
28
|
+
lease gates, SDD boundaries, trigger ownership, browser routing, adapter
|
|
29
|
+
registration and installer races.
|
|
30
|
+
Adapter tests execute every bootstrap mechanism that can run locally: the Claude
|
|
31
|
+
and Cursor SessionStart JSON shapes, OpenCode injection/deduplication (including
|
|
32
|
+
a first message without a text part), and Pi discovery plus per-request
|
|
33
|
+
injection. They also parse the portable Agent
|
|
34
|
+
Plugin, Gemini and Kimi manifests, reject invented Devin/Hermes adapters and
|
|
35
|
+
enforce the exact eighteen-skill inventory, correction hooks and workflow
|
|
36
|
+
diagram contract.
|
|
37
|
+
|
|
38
|
+
Static delegation contract checks cover ready-unit dispatch, the compact native
|
|
39
|
+
packet, completion-driven refill and uncertain-send safeguards in the
|
|
40
|
+
[canonical delegation contract](../skills/nobrainer-tech-flow/references/delivery.md#coordinated-team-execution).
|
|
41
|
+
These source checks do not prove native worker launches, accepted runtime output,
|
|
42
|
+
or any speed, token or quality gain. Those require a recorded client run.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
python3 -m unittest discover -s tests -v
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Session-lifetime smoke
|
|
49
|
+
|
|
50
|
+
[`tests/test_session_lifecycle.py`](../tests/test_session_lifecycle.py) is a
|
|
51
|
+
deterministic, model-free protocol smoke. It covers the nominal clean-session
|
|
52
|
+
trace, each health-gate event, configurable warning/hard limits, unknown and
|
|
53
|
+
unsupported signals with safe bounded continuation, strict-budget refusal, checkpoint plus `END_TURN` without authorized rotation,
|
|
54
|
+
`task_complete` with a live controlled worker followed by explicit release, and
|
|
55
|
+
empty-ready-set handling: wait for running work, audit reports, finish accepted
|
|
56
|
+
work, or surface a real owner decision. It also
|
|
57
|
+
proves that resume reads the durable Markdown goal instead of stale summary
|
|
58
|
+
text, and that host clear requires capability, no active writer and positive
|
|
59
|
+
readback; otherwise the contract ends the turn or requires manual action. It does
|
|
60
|
+
not prove that Codex, Claude Code,
|
|
61
|
+
OpenCode or another host exposes those signals; that requires the clean-session
|
|
62
|
+
readback below.
|
|
63
|
+
|
|
64
|
+
GitHub Actions runs these deterministic layers on Linux and macOS, and the whole
|
|
65
|
+
suite once more on Python 3.13 (a symlink-loop check that relied on an exception
|
|
66
|
+
Python 3.13 no longer raises went unnoticed on 3.11). It checks
|
|
67
|
+
Python, Node and shell syntax plus deterministic adapter contracts, and runs a
|
|
68
|
+
checksum-pinned Gitleaks tree scan on Linux. A Windows job runs the structure
|
|
69
|
+
validators, the adapter tests (including the LF pins for the hook scripts and the
|
|
70
|
+
bootstrap), [`tests/test_windows_smoke.py`](../tests/test_windows_smoke.py):
|
|
71
|
+
the hook wrapper under Git Bash, a copy-mode install, personalization and the UTC
|
|
72
|
+
session title, and both one-command installers,
|
|
73
|
+
[`tests/test_one_command_installer.py`](../tests/test_one_command_installer.py)
|
|
74
|
+
and [`tests/test_shell_installer.py`](../tests/test_shell_installer.py) (the shell
|
|
75
|
+
one under Git Bash), previewing, installing, repeating and undoing on that runner.
|
|
76
|
+
CI sets `NOBRAINER_REQUIRE_SYMLINKS=1`, so a runner that cannot create links fails
|
|
77
|
+
those tests instead of skipping them. It does not run the whole suite on Windows:
|
|
78
|
+
some historical evidence tests compare text byte for byte and assume LF checkouts.
|
|
79
|
+
CI does not claim a client UI or model followed a skill.
|
|
80
|
+
|
|
81
|
+
The one-command installer tests run the real scripts against a private home:
|
|
82
|
+
preview writes nothing, apply links every skill and writes one block without any
|
|
83
|
+
standing authorization, a second apply changes nothing, undo puts the instruction
|
|
84
|
+
file back byte for byte (and keeps edits made outside the block since), a foreign
|
|
85
|
+
canonical target is refused before any write, and the variables and `--home`
|
|
86
|
+
select the same place the helpers do. The shell installer's tests also run it in
|
|
87
|
+
every POSIX shell found (dash, bash in POSIX mode, busybox sh, zsh emulating sh), with no Python on
|
|
88
|
+
its `PATH`, and check that its block is byte for byte the Python helper's, that
|
|
89
|
+
either installer undoes what the other did with the same bytes, and that a
|
|
90
|
+
tampered setup record is refused. Both installers preserve foreign targets at
|
|
91
|
+
retired names through preview, apply, repeat and undo, while exact old links,
|
|
92
|
+
renamed aliases and unresolved legacy names still block. Shell tests compare
|
|
93
|
+
exact-link classification with Python for absolute, relative, chained and looping
|
|
94
|
+
links in every available shell. They also check that a second undo is a no-op
|
|
95
|
+
that writes nothing, that undo removes the empty folders the setup created and no
|
|
96
|
+
others, that a repeat apply says `UP TO DATE` without a restart hint, and that
|
|
97
|
+
`install.sh` replaces a block of an earlier version while every byte around it
|
|
98
|
+
stays. In the 2.0.2 measurement they caught 30 of 34
|
|
99
|
+
mutants of `install.sh`; the [2.0.2 record](releases/v2.0.2.md) says why the
|
|
100
|
+
other four were not caught.
|
|
101
|
+
|
|
102
|
+
## 3. Forward behavior evaluation
|
|
103
|
+
|
|
104
|
+
Historical v1.6 runtime receipts bind the frozen source archive, not a changing
|
|
105
|
+
checkout. The test rejects missing, duplicate or altered archived entries and
|
|
106
|
+
continues checking the original case and output hashes. A later instruction
|
|
107
|
+
review is source-contract evidence unless fresh model runs are recorded for its
|
|
108
|
+
exact bytes; it cannot upgrade the release's runtime proof.
|
|
109
|
+
|
|
110
|
+
Behavior-shaping changes need a frozen scenario set, an unchanged baseline and
|
|
111
|
+
an independent judge. Keep development cases separate from final holdout cases;
|
|
112
|
+
do not tune against a failed holdout. Record accepted findings, null results,
|
|
113
|
+
digest, rollback and any model/harness substitutions.
|
|
114
|
+
|
|
115
|
+
Before baseline scoring, self-test the complete evaluator with known-good and
|
|
116
|
+
known-bad controls plus a deceptive control when the metric can be gamed.
|
|
117
|
+
Candidate writes must not reach the rubric, cases, score extractor or acceptance
|
|
118
|
+
harness. Bind each score to target/evaluator/case identities and raw evidence;
|
|
119
|
+
changed receipt fields require re-baselining. Predeclare equal repetitions for
|
|
120
|
+
stochastic comparisons and require at least three paired runs for a borderline
|
|
121
|
+
promotion claim.
|
|
122
|
+
|
|
123
|
+
The [v1.6.1 evidence](releases/v1.6.1.md) records fresh response simulations
|
|
124
|
+
and actual artifact execution, including failed behavioral gates. No measured
|
|
125
|
+
model-quality promotion is accepted. Artifact integrity and score arithmetic
|
|
126
|
+
are checked independently of those behavioral verdicts.
|
|
127
|
+
|
|
128
|
+
The v1.6 probes and their source bindings are in
|
|
129
|
+
[`releases/v1.6.0.md`](releases/v1.6.0.md). Source-only contract tests and
|
|
130
|
+
one behavioral trial are not a comparative benchmark. Earlier changed-control records are
|
|
131
|
+
[`evals/v1.3.0-harness-clarity-2026-08-30.md`](evals/v1.3.0-harness-clarity-2026-08-30.md),
|
|
132
|
+
[`evals/dispatcher-routing-v1.2.0-2026-08-28.md`](evals/dispatcher-routing-v1.2.0-2026-08-28.md)
|
|
133
|
+
and
|
|
134
|
+
[`evals/writing-density-v1.2.0-2026-08-28.md`](evals/writing-density-v1.2.0-2026-08-28.md).
|
|
135
|
+
The broader v1.1 routing baseline remains in
|
|
136
|
+
[`evals/core-routing-v1.1.0-2026-08-28.md`](evals/core-routing-v1.1.0-2026-08-28.md).
|
|
137
|
+
Do not mix scores across changed inventories, prompts or rubrics.
|
|
138
|
+
|
|
139
|
+
## 4. Client runtime acceptance
|
|
140
|
+
|
|
141
|
+
A client becomes runtime-verified only after a clean-session transcript proves
|
|
142
|
+
discovery and correct first actions. Follow
|
|
143
|
+
[`COMPATIBILITY.md`](COMPATIBILITY.md). Marketplace publication, production
|
|
144
|
+
behavior and buyer usefulness each require their own readback.
|
|
145
|
+
|
|
146
|
+
For a long-running probe, read back `SESSION_HEALTH_GATE` at `START`,
|
|
147
|
+
`AFTER_COMPACTION`, `MATERIAL_TRANSITION` and `BEFORE_CLOSEOUT`, including the
|
|
148
|
+
host policy and actual signal values. Read back `RUNTIME_RELEASE` separately;
|
|
149
|
+
`task_complete` is not evidence that task-owned browser, tool or subprocess
|
|
150
|
+
workers ended. A missing capability is `UNKNOWN` or `UNSUPPORTED`, lowers the
|
|
151
|
+
runtime proof, and must not be reported as a clean-runtime pass. Missing optional telemetry
|
|
152
|
+
does not block safe artifact delivery; missing enforcement of an explicitly
|
|
153
|
+
required hard budget blocks only work that depends on that guarantee.
|
|
154
|
+
Native goals are optional and require the host tool's authorization; a Markdown
|
|
155
|
+
goal is sufficient. Before a host clear, persist and read back `GOAL_FILE`, verify no task-owned
|
|
156
|
+
writer remains, record `CLEAR_MODE`, then prove clear completion. Start a fresh
|
|
157
|
+
turn by reading the same goal file and reconciling repository, checkout, state
|
|
158
|
+
and next safe action; transcript text alone is not recovery evidence.
|
|
159
|
+
|
|
160
|
+
For Codex, test explicit invocation with the name the client lists for the module
|
|
161
|
+
(`$nobrainer-tech-flow:nobrainer-tech-flow` when it lists modules under the plugin
|
|
162
|
+
name, `$nobrainer-tech-flow` when it lists them plainly; the other form adds no
|
|
163
|
+
module text) and test plain aliases separately as implicit-routing controls. Bind
|
|
164
|
+
the transcript to the exact installed skill hash and disable same-name user copies
|
|
165
|
+
in an isolated probe; two skills with the same name are not merged. An alias
|
|
166
|
+
failure must not be reported as a source-isolated behavior result.
|
|
167
|
+
|
|
168
|
+
Model-policy tests prove the portable `STANDARD`, `EXTENDED` and `ROUTED`
|
|
169
|
+
contract, including the no-silent-switch rule. They do not prove that a client
|
|
170
|
+
actually selects a provider model. That requires a clean-session readback of
|
|
171
|
+
requested versus actual model, effort, budget and escalation behavior.
|
|
172
|
+
|
|
173
|
+
## Release gate
|
|
174
|
+
|
|
175
|
+
A releasable commit requires:
|
|
176
|
+
|
|
177
|
+
- all deterministic checks green on the exact commit;
|
|
178
|
+
- no unresolved P0/P1 review finding;
|
|
179
|
+
- a public-clean and secret scan;
|
|
180
|
+
- a recorded behavior holdout for changed workflow controls;
|
|
181
|
+
- a review-failure scenario proving the route returns to Build with invalidated
|
|
182
|
+
evidence;
|
|
183
|
+
- a public-surface coherence check: every affected README, doc, template and
|
|
184
|
+
diagram is updated and read back, or `NOT_NEEDED` is recorded with a reason;
|
|
185
|
+
flow changes refresh both the SVG and README Mermaid chart;
|
|
186
|
+
- honest compatibility labels;
|
|
187
|
+
- model names and marketing remain workflow-positioning claims unless direct
|
|
188
|
+
runtime evidence exists;
|
|
189
|
+
- a rollback path;
|
|
190
|
+
- owner approval for merge and publication.
|
|
191
|
+
|
|
192
|
+
Scan the exact staged candidate with:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
gitleaks git --pre-commit --staged --redact --no-banner --ignore-gitleaks-allow
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
A full-history finding is a separate history-remediation decision. Investigate
|
|
199
|
+
it explicitly; do not hide it behind a broad allowlist or treat it as proof that
|
|
200
|
+
the staged candidate introduced a secret.
|
|
201
|
+
|
|
202
|
+
## Session restart
|
|
203
|
+
|
|
204
|
+
`tests/test_restart_gate.py` invokes the shipped helper rather than a test-only
|
|
205
|
+
copy. It covers startup-cost payback, unknown economics, repeated restart without
|
|
206
|
+
progress, consent, unknown writers, stale checkpoints/ACKs, uncertain transport,
|
|
207
|
+
unsupported transfer and archive/takeover ordering. These are decision-level
|
|
208
|
+
tests; no real session is created or archived by the helper.
|
|
209
|
+
|
|
210
|
+
Native-adapter acceptance additionally requires an actual fresh target, visible
|
|
211
|
+
read-only ACK, authoritative conditional transfer, target takeover and exact old
|
|
212
|
+
session archive readback. Include a competing trigger and interrupted create.
|
|
213
|
+
Measure accepted work and total input/output/compaction/recovery usage before
|
|
214
|
+
and after; deterministic decisions do not establish token or quality gains.
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
## 2.1.0 idea intake and plain technical English
|
|
218
|
+
|
|
219
|
+
The [2.1.0 record](releases/v2.1.0.md) separates instruction review, bounded
|
|
220
|
+
same-session writing exercises, repository tests and public release readback.
|
|
221
|
+
The baseline already followed an explicitly requested SDD/end-to-end path;
|
|
222
|
+
this release does not claim a measured behavioral gain from making it explicit.
|
|
223
|
+
A formal ASD-STE100 audit, clean-session client discovery and comparative model
|
|
224
|
+
cost/speed tests remain outside this evidence.
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
## 2.2.0 presentation and closeout
|
|
228
|
+
|
|
229
|
+
The [2.2.0 record](releases/v2.2.0.md) binds fresh Codex/Claude print runs to
|
|
230
|
+
the exact communication reference and retains synthetic prompts and responses.
|
|
231
|
+
These are explicit-source behavior slices. Host-executed artifact checks do not
|
|
232
|
+
prove automatic discovery or autonomous whole-task execution in either client.
|