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,135 @@
|
|
|
1
|
+
# nobrainer-tech-flow 2.0.1 verification record
|
|
2
|
+
|
|
3
|
+
Source version: 2.0.1. Publication is a separate check against the public tag
|
|
4
|
+
and release archive; this document alone does not establish distribution.
|
|
5
|
+
|
|
6
|
+
Corrections made by 2.0.2 (see its [record](v2.0.2.md)): the statements below that
|
|
7
|
+
a symlink-loop destination is reported (not on Python 3.13), that a Claude import is
|
|
8
|
+
recognised "only when it is a plain, stand-alone one" (code spans, nested fences,
|
|
9
|
+
comments, raw HTML and more were still mistaken for imports; 2.0.2 recognises only a
|
|
10
|
+
file that holds nothing but the import), that a non-absolute environment variable is
|
|
11
|
+
an error (for every client, not only the one that reads it; a blank one also counted
|
|
12
|
+
as unset) and that copy mode ignores bytecode (any `.pyc`, not only `__pycache__`).
|
|
13
|
+
|
|
14
|
+
2.0.1 is a corrective release for 2.0.0. It adds no skill and keeps the
|
|
15
|
+
eighteen-skill portfolio. The only skill-text change with a behavioural effect is
|
|
16
|
+
a fallback for a missing `nobrainer-sessions` (see "Documentation and skills").
|
|
17
|
+
|
|
18
|
+
## What changed
|
|
19
|
+
|
|
20
|
+
Client adapters
|
|
21
|
+
|
|
22
|
+
- Codex marketplace entry: the plugin is named `nobrainer-tech-flow` like its
|
|
23
|
+
manifest and uses a local source, so `codex plugin add` finds and installs it.
|
|
24
|
+
Before, neither plugin name matched both files.
|
|
25
|
+
- Codex manifest: the two default prompts fit the 128-character limit; longer
|
|
26
|
+
ones are ignored by the client.
|
|
27
|
+
- OpenCode: the bootstrap is still added after a compaction, when the first user
|
|
28
|
+
message has no text part, and a missing bootstrap file no longer throws.
|
|
29
|
+
- Pi: dead state removed; a missing bootstrap file no longer fails a request.
|
|
30
|
+
- Hooks: `hooks/session-start`, `hooks/run-hook.cmd` and `adapters/bootstrap.md`
|
|
31
|
+
are pinned to LF, so a Windows checkout with `core.autocrlf=true` still runs the
|
|
32
|
+
scripts and the bootstrap reaches the model without carriage returns.
|
|
33
|
+
`session-start` accepts a backslash script path when run under Git Bash, which
|
|
34
|
+
is how the Windows batch half of the wrapper starts it. `run-hook.cmd` itself
|
|
35
|
+
is unchanged and must stay POSIX-sh compatible, because hosts start it
|
|
36
|
+
through `/bin/sh`.
|
|
37
|
+
|
|
38
|
+
Installers and setup
|
|
39
|
+
|
|
40
|
+
- `install_skills.py`: copy mode no longer calls `ctypes.CDLL(None)` on Windows;
|
|
41
|
+
repeating a copy install over an identical copy is a no-op, ignoring bytecode
|
|
42
|
+
and `.DS_Store` litter, and a foreign directory is rejected by comparing names
|
|
43
|
+
and sizes before any file is read; a destination that is a file, a symlink loop
|
|
44
|
+
or unreadable, and a dangling link, are reported instead of crashing; the
|
|
45
|
+
preview names links from a selected skill to a skill that will be absent.
|
|
46
|
+
- Claude Code `CLAUDE_CONFIG_DIR` and OpenCode `XDG_CONFIG_HOME` select the skills
|
|
47
|
+
directory, and Codex `CODEX_HOME` and the same two select the instruction file,
|
|
48
|
+
when `--home` is not given. An explicit `--home` ignores them. A value that is
|
|
49
|
+
not an absolute path is an error, and a blank one counts as unset.
|
|
50
|
+
- `install_personalization.py`: a Claude file that imports the Codex global file
|
|
51
|
+
is treated as inheriting only when the import is a plain, stand-alone one and
|
|
52
|
+
the Codex file holds the block; otherwise the block is written and the reason
|
|
53
|
+
printed. Codex's `AGENTS.override.md` blocks the write it would shadow. The new
|
|
54
|
+
`--keep-options` flag keeps earlier auto-update, session-restart and wiki-root
|
|
55
|
+
settings, recognising a grant only as the exact line the installer writes for it
|
|
56
|
+
(so a `--preferences` value quoting the wording cannot forge one), and the block
|
|
57
|
+
no longer carries a stray blank line.
|
|
58
|
+
- `recommend_flow_setup.py`: without a terminal (including a closed stdin) and with
|
|
59
|
+
an answer missing it stops with `INPUT_REQUIRED` and the flags to pass, instead
|
|
60
|
+
of hanging or crashing; it follows the same environment variables, resolves a
|
|
61
|
+
relative `--home`, always keeps earlier options, treats a symlink loop as a
|
|
62
|
+
conflict and says what to do when the Codex override file blocks the write.
|
|
63
|
+
- All three scripts write UTF-8 to a pipe, so paths and instruction-file lines
|
|
64
|
+
outside the Windows code page no longer abort them, and the guided setup reads
|
|
65
|
+
the `gh` output as UTF-8.
|
|
66
|
+
- `session_title.py`: the default UTC title no longer needs a time-zone database,
|
|
67
|
+
which Windows does not ship.
|
|
68
|
+
- `check_public_commit.py`: decodes Git output as UTF-8 and reports a missing Git.
|
|
69
|
+
|
|
70
|
+
Upgrading
|
|
71
|
+
|
|
72
|
+
- If you ran the guided setup with 2.0.0 while `CLAUDE_CONFIG_DIR` or
|
|
73
|
+
`XDG_CONFIG_HOME` was set, 2.0.0 had written to the default location instead.
|
|
74
|
+
Re-running with 2.0.1 then stops and says so; run the same command with
|
|
75
|
+
`--rollback --apply` once, or pass `--home` to keep that location.
|
|
76
|
+
- The next personalization run rewrites the managed block once (the stray blank
|
|
77
|
+
line is gone) and shows the difference in its preview.
|
|
78
|
+
|
|
79
|
+
Documentation and skills
|
|
80
|
+
|
|
81
|
+
- README lists all eighteen skills, states six compatibility levels and no longer
|
|
82
|
+
says 1.6 is current; `CLAUDE.md`/`AGENTS.md` lose stray backslashes; one
|
|
83
|
+
machine path is removed from `tasks/todo.md`.
|
|
84
|
+
- `docs/INSTALL.md`: correct code fences, the guided-setup flags, the Claude Code
|
|
85
|
+
and Codex plugin commands and invocation forms, a subset example that keeps
|
|
86
|
+
what the core skill links to, one-channel-per-client guidance, and a Windows
|
|
87
|
+
section. Adapter descriptions match the code, and Cursor is no longer called
|
|
88
|
+
tested.
|
|
89
|
+
- Three small skill-text edits, none evaluated with model runs (none was
|
|
90
|
+
possible here):
|
|
91
|
+
- `references/worktrees.md` and `references/daily-update.md` name their helper
|
|
92
|
+
scripts through `<flow-skill-dir>`, as the other references do, instead of a
|
|
93
|
+
path that exists only inside this repository.
|
|
94
|
+
- `nobrainer-codex-context` starts its read-only probe from the project through
|
|
95
|
+
`<context-skill-dir>`. The old text said to run it from the skill directory,
|
|
96
|
+
where it inspected the skill folder and reported `MISSING`.
|
|
97
|
+
- The core skill runs the Sessions startup step only when `nobrainer-sessions`
|
|
98
|
+
is installed and otherwise stays in MAIN. Before, a subset install without
|
|
99
|
+
Sessions pointed at a file that does not exist. Nothing changes when Sessions
|
|
100
|
+
is installed.
|
|
101
|
+
|
|
102
|
+
Release gates
|
|
103
|
+
|
|
104
|
+
- The skill `VERSION` file and `package-lock.json` must match the manifests;
|
|
105
|
+
`check_flow_update.py` reads the former.
|
|
106
|
+
- A cross-skill link map fails when a skill starts linking into another skill,
|
|
107
|
+
the subset example in `docs/INSTALL.md` must have no dead links, and the README
|
|
108
|
+
table must list every skill.
|
|
109
|
+
- CI syntax-checks the skill helper scripts and runs a Windows job.
|
|
110
|
+
|
|
111
|
+
## Reproduce the repository checks
|
|
112
|
+
|
|
113
|
+
From the exact reviewed release checkout, run:
|
|
114
|
+
|
|
115
|
+
```sh
|
|
116
|
+
python3 scripts/validate_skills.py --suite
|
|
117
|
+
python3 -m unittest discover -s tests -q
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
The Windows job runs the validators plus `tests.test_windows_smoke` and
|
|
121
|
+
`tests.test_adapters`. It passed on GitHub's `windows-latest` (Git Bash, Python
|
|
122
|
+
3.11, Node 22) for this source, including the `cmd` wrapper reaching the bootstrap
|
|
123
|
+
through Git Bash and a copy-mode install. The whole suite is not run there: some
|
|
124
|
+
historical evidence tests compare text byte for byte and assume LF checkouts.
|
|
125
|
+
|
|
126
|
+
## Evidence limits
|
|
127
|
+
|
|
128
|
+
These checks establish local helper behavior, source contracts and the client
|
|
129
|
+
readbacks named in the [compatibility record](../COMPATIBILITY.md). They do not
|
|
130
|
+
prove that a client routes a task through Flow, that a model followed a skill, or
|
|
131
|
+
that Cursor, Gemini CLI, Kimi Code, OpenCode or Pi accept the adapters at
|
|
132
|
+
runtime; the OpenCode synthetic text part follows the message shape simulated in
|
|
133
|
+
the tests, not a real OpenCode session. Known gaps that this release does not address are the cost of starting
|
|
134
|
+
Flow on a trivial task, the worktree-per-task default, and the differences between
|
|
135
|
+
the Flow and Dispatcher ledgers.
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# nobrainer-tech-flow 2.0.2 verification record
|
|
2
|
+
|
|
3
|
+
Source version: 2.0.2. Publication is a separate check against the public tag
|
|
4
|
+
and release archive; this document alone does not establish distribution.
|
|
5
|
+
|
|
6
|
+
2.0.2 builds on the [2.0.1 record](v2.0.1.md): everything in it is part of this
|
|
7
|
+
release. It adds two installer scripts and fixes what two independent reviews found.
|
|
8
|
+
It adds no skill (the portfolio stays eighteen) and changes no skill text, adapter
|
|
9
|
+
or hook; the manifests change only their version.
|
|
10
|
+
|
|
11
|
+
## What changed
|
|
12
|
+
|
|
13
|
+
Installing without Python
|
|
14
|
+
|
|
15
|
+
- `scripts/install.sh` is a POSIX sh script for one client (`claude`, `codex`,
|
|
16
|
+
`opencode` or `copilot`): `sh scripts/install.sh --client claude` previews,
|
|
17
|
+
`--apply` installs, `--undo --apply` reverses. It runs in dash, bash, zsh and
|
|
18
|
+
busybox on macOS, Linux and WSL, and in Git Bash on Windows, and needs only the
|
|
19
|
+
usual system tools (sed, grep, head, tail, mktemp, sha256sum or shasum, and git
|
|
20
|
+
to show the source commit).
|
|
21
|
+
- The README opens its install section with a prompt to paste into any coding
|
|
22
|
+
agent: it clones or updates the repository and follows the install method the
|
|
23
|
+
README gives for that agent. It names no version, script or client list, so it
|
|
24
|
+
stays valid as they change. The same two commands follow for a terminal.
|
|
25
|
+
- It uses the same locations, variables, conflict rule and setup record as the
|
|
26
|
+
Python scripts, and writes byte for byte the block the Python helper writes, so a
|
|
27
|
+
setup made by either one can be undone by the other.
|
|
28
|
+
- It never grants an authorization, links only (like `install.py`), and leaves a
|
|
29
|
+
managed block that is already there exactly as it is, where `install.py` rewrites
|
|
30
|
+
it to the current text and keeps its options.
|
|
31
|
+
- It refuses the paths the Python scripts refuse (a control character, a line or
|
|
32
|
+
paragraph separator, and, where `iconv` is installed, bytes that are not UTF-8),
|
|
33
|
+
so a record it writes stays readable to them, and it reads `--home=~/x` as
|
|
34
|
+
`install.py` does.
|
|
35
|
+
|
|
36
|
+
One command with Python
|
|
37
|
+
|
|
38
|
+
- `python3 scripts/install.py --client claude` does the same through the guided
|
|
39
|
+
setup with every skill selected. It asks nothing, prints the exact text it would
|
|
40
|
+
write, refuses a target that is not its own link, and runs the guided setup's own
|
|
41
|
+
checks in the preview, so the preview refuses whatever `--apply` would refuse.
|
|
42
|
+
|
|
43
|
+
Undo that reverses the install
|
|
44
|
+
|
|
45
|
+
- The setup record keeps the backup from the first install. Before, every later
|
|
46
|
+
run replaced it with the file as it was just before that run, so after an update
|
|
47
|
+
the undo restored a file that still held the block (found by the second review).
|
|
48
|
+
- Undo puts the managed block back as it was before the first setup (removed, or
|
|
49
|
+
the block that was there) and leaves the rest of the file as it is now. The file
|
|
50
|
+
comes back byte for byte when nothing else changed, and edits made outside the
|
|
51
|
+
block since are kept. A block that was already there before the first install,
|
|
52
|
+
with its options and preference, is no longer deleted by the undo. That holds
|
|
53
|
+
for setups recorded by 2.0.2: a 2.0.0 or 2.0.1 record made when the block was
|
|
54
|
+
already there holds no backup, so its undo still removes the block.
|
|
55
|
+
- The block is replaced as whole lines, the line break after its END marker
|
|
56
|
+
included, so both undos give the same bytes even after edits around the block,
|
|
57
|
+
and text added after a block that ended the file keeps a line of its own.
|
|
58
|
+
|
|
59
|
+
Claude files that import the Codex instructions
|
|
60
|
+
|
|
61
|
+
- The block is skipped only when the Claude file holds nothing but the import line
|
|
62
|
+
(`@~/.codex/AGENTS.md` or the absolute path) and the Codex file has the block;
|
|
63
|
+
every other Claude file gets its own block. 2.0.1 tried to recognise an import
|
|
64
|
+
anywhere in the file; the second review showed, against the real Claude Code
|
|
65
|
+
2.1.284, ordinary files where it saw an import that Claude Code does not load
|
|
66
|
+
(for example a list step whose closing fence sits at column 0, a quoted indented
|
|
67
|
+
example, a link definition, a tab after spaces), which left Claude without the
|
|
68
|
+
block. A second copy of the block is harmless; a missing one is not.
|
|
69
|
+
|
|
70
|
+
Fixes from the independent review of 2.0.1
|
|
71
|
+
|
|
72
|
+
Each has a regression test that fails against the 2.0.1 scripts.
|
|
73
|
+
|
|
74
|
+
- An environment variable that the selected client never reads (a literal
|
|
75
|
+
`XDG_CONFIG_HOME=~/.config` with Claude Code, a relative `CODEX_HOME` with
|
|
76
|
+
Copilot) stopped every client and made a finished setup impossible to undo. Only
|
|
77
|
+
the variable the client reads is checked now, and its value is used exactly as
|
|
78
|
+
written. An empty `CODEX_HOME` or `XDG_CONFIG_HOME` counts as unset, as Codex
|
|
79
|
+
0.158.0 (checked) and the XDG specification treat it; spaces only, and an empty
|
|
80
|
+
`CLAUDE_CONFIG_DIR`, are relative paths and an error.
|
|
81
|
+
- A grant could be forged under `--keep-options` from a `--wiki-root` path that
|
|
82
|
+
carried a line-separator character (U+2028, U+0085, U+001C and others), because
|
|
83
|
+
grant lines were found with `str.splitlines`. A grant is now a whole line ending
|
|
84
|
+
at `\n` or `\r\n`, and a preference or wiki path must be one printable line. An
|
|
85
|
+
edited grant line is not kept, and the run now says so and names the flag.
|
|
86
|
+
- On Python 3.13 a destination that is a symlink loop was accepted (`resolve()` no
|
|
87
|
+
longer raises); it is reported again.
|
|
88
|
+
- Copy mode ignored every `.pyc` and any directory named like litter, so a planted
|
|
89
|
+
`json.pyc` next to a script (importable, and it shadows the standard library) was
|
|
90
|
+
reported as an identical copy. Only `__pycache__` directories and `.DS_Store` and
|
|
91
|
+
`Thumbs.db` files are ignored now.
|
|
92
|
+
- A home path that is not valid UTF-8, that holds a line break, or an empty or
|
|
93
|
+
relative `HOME` is refused before anything is written; such paths used to finish
|
|
94
|
+
a setup that could not be undone.
|
|
95
|
+
- End of input at the interactive selection prompt ends the run instead of raising.
|
|
96
|
+
- The 2.0.1 statement that Claude Code "does not accept" a relative or `~`
|
|
97
|
+
`CLAUDE_CONFIG_DIR` was wrong: Claude Code 2.1.284 creates the directory named by
|
|
98
|
+
a relative value in its working directory and takes `~` literally. The installer
|
|
99
|
+
still refuses such values because it cannot know what the client means.
|
|
100
|
+
|
|
101
|
+
Smaller changes from the second review
|
|
102
|
+
|
|
103
|
+
- The printed undo and install summaries are read from the setup record, not from
|
|
104
|
+
printed paths, and the undo counts the links it actually removed.
|
|
105
|
+
- Messages name this command's flags (`--undo --apply`), a link left by an earlier
|
|
106
|
+
layout gets the migration command, Windows hints say `py -3`, and when
|
|
107
|
+
`CLAUDE_CONFIG_DIR`, `CODEX_HOME` or `XDG_CONFIG_HOME` chose the location the
|
|
108
|
+
output says to keep it set for the undo.
|
|
109
|
+
- In `install.py` the link check before `--apply` runs where the skills go, not
|
|
110
|
+
only in the temp folder. `install.sh` checks in the temp folder; when a link still
|
|
111
|
+
fails where the skills go, it removes the links that run made and stops.
|
|
112
|
+
|
|
113
|
+
Fixes from the review of the new scripts
|
|
114
|
+
|
|
115
|
+
A third read-only review, of `install.sh`, the new undo and `install.py`, found no
|
|
116
|
+
blocker and 13 smaller problems. Each fix below has a test that fails against the
|
|
117
|
+
scripts before it, except the one for concurrent runs, which was checked by hand.
|
|
118
|
+
|
|
119
|
+
- A hint that points to the Python undo keeps `--home`; following it used to undo
|
|
120
|
+
the default profile instead. On Windows it says `py -3`.
|
|
121
|
+
- When the Claude file had become nothing but the Codex import, a repeat run left a
|
|
122
|
+
record that neither undo could reverse. The record now drops that file, as the
|
|
123
|
+
guided setup's does, and the undo removes the links.
|
|
124
|
+
- Several runs at once could write links into the checkout, and a run could report
|
|
125
|
+
success after another one removed its links. A link is never made through a link
|
|
126
|
+
another run just made: one run wins, the others stop and remove only their own.
|
|
127
|
+
- `sh scripts/install.sh` failed with `CDPATH` set.
|
|
128
|
+
- When a record names another place, both installers now name the setting that
|
|
129
|
+
setup was made with (for example `CLAUDE_CONFIG_DIR=...`, or the variable unset),
|
|
130
|
+
and the undo command they print works as printed.
|
|
131
|
+
- `install.sh` undoes a file that ends in a lone CR (old Mac line breaks) or holds a
|
|
132
|
+
NUL byte byte for byte; before, it installed and then refused to undo.
|
|
133
|
+
- A variable of another client that holds a control character no longer stops
|
|
134
|
+
`install.sh`.
|
|
135
|
+
- The mutation check found checks that no test reached; they now have tests (see
|
|
136
|
+
below).
|
|
137
|
+
|
|
138
|
+
Documentation and gates
|
|
139
|
+
|
|
140
|
+
- README, `docs/INSTALL.md`, `docs/TESTING.md` and `.opencode/INSTALL.md` describe
|
|
141
|
+
the new scripts and rules; the erratum for the 2.0.1 statements above is at the
|
|
142
|
+
top of its record.
|
|
143
|
+
- Tests: `tests/test_shell_installer.py` and `tests/test_one_command_installer.py`
|
|
144
|
+
run the real scripts against a private home; the shell tests also run in every
|
|
145
|
+
POSIX shell found and with no Python on the `PATH`, and check both lists of skill
|
|
146
|
+
names against the Python installer. The regression tests fail against the
|
|
147
|
+
previous scripts.
|
|
148
|
+
- Mutation check: 34 mutants of `install.sh`, each removing one check or behavior;
|
|
149
|
+
the shell tests catch 30. Of the other four, two change nothing (a second check
|
|
150
|
+
refuses the same backup paths, and `mktemp` already creates the record private)
|
|
151
|
+
and two matter only when another process changes the links during a run: the
|
|
152
|
+
re-check before an undo removes a link, and `ln -n` for runs at the same time,
|
|
153
|
+
checked by hand (12 rounds of 4 runs at once: one run succeeds each time, its
|
|
154
|
+
record matches its links, and nothing is written into the checkout). Of the
|
|
155
|
+
`install.py` mutants tried, only the link check at `--apply` is not caught; it
|
|
156
|
+
matters only where the skills folder refuses links that the temp folder allows.
|
|
157
|
+
- CI runs both installers' tests in the Windows job (the shell one under Git Bash),
|
|
158
|
+
the whole suite on Python 3.13 with Node 22, checks `sh -n scripts/install.sh`,
|
|
159
|
+
and fails instead of skipping when a runner cannot create links.
|
|
160
|
+
- `scripts/install.sh` is pinned to LF, like the hook scripts.
|
|
161
|
+
|
|
162
|
+
## Reproduce the repository checks
|
|
163
|
+
|
|
164
|
+
From the exact reviewed release checkout, run:
|
|
165
|
+
|
|
166
|
+
```sh
|
|
167
|
+
python3 scripts/validate_skills.py --suite
|
|
168
|
+
python3 -m unittest discover -s tests -q
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Evidence limits
|
|
172
|
+
|
|
173
|
+
These checks establish local helper behavior, source contracts and the client
|
|
174
|
+
readbacks named in the [compatibility record](../COMPATIBILITY.md), which was made
|
|
175
|
+
against the 2.0.1 adapters that this release leaves unchanged. They do not prove
|
|
176
|
+
that a client routes a task through Flow, that a model followed a skill, or that
|
|
177
|
+
Cursor, Gemini CLI, Kimi Code, OpenCode or Pi accept the adapters at runtime. No
|
|
178
|
+
client was read back on an install made by either new script.
|
|
179
|
+
|
|
180
|
+
- The shell installer ran here in dash, bash (POSIX mode), busybox sh and zsh
|
|
181
|
+
emulating sh on Linux; CI runs it under macOS's own `/bin/sh` and under Git Bash
|
|
182
|
+
on Windows. A Windows account without the right to create links was not run.
|
|
183
|
+
- The single-line import rule was checked against the real Claude Code 2.1.284
|
|
184
|
+
only through the review's documents; the rule itself needs no Markdown parsing.
|
|
185
|
+
- `install.sh` refuses a path that is not UTF-8 only where `iconv` is installed.
|
|
186
|
+
Runs at the same time were checked by hand, not in the suite.
|
|
187
|
+
- Known gaps that this release does not address are the cost of starting Flow on a
|
|
188
|
+
trivial task, the worktree-per-task default, and the differences between the Flow
|
|
189
|
+
and Dispatcher ledgers.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# nobrainer-tech-flow 2.1.0 verification record
|
|
2
|
+
|
|
3
|
+
Source version: 2.1.0. Publication requires separate tag and release-archive
|
|
4
|
+
readback; this document does not by itself establish distribution.
|
|
5
|
+
|
|
6
|
+
## Scope
|
|
7
|
+
|
|
8
|
+
This release adds explicit idea intake and connects generated SDD acceptance
|
|
9
|
+
criteria to the existing autopilot loop. It adds plain technical English as a
|
|
10
|
+
mode of Writing. There are still eighteen skills and no new background runner,
|
|
11
|
+
scheduler, model benchmark or provider call. Existing installers and adapters
|
|
12
|
+
are unchanged except for release versions.
|
|
13
|
+
|
|
14
|
+
The source since 2.0.2 also includes the
|
|
15
|
+
[approved-plan autopilot change](https://github.com/nobrainer-tech/nobrainer-tech-flow/pull/71).
|
|
16
|
+
The [2.0.2 record](v2.0.2.md) remains the installer baseline.
|
|
17
|
+
|
|
18
|
+
## Sources and adaptation
|
|
19
|
+
|
|
20
|
+
- [Karpathy's original post](https://x.com/karpathy/status/2105819303471976479):
|
|
21
|
+
writing and explanation guidance, not a new language or a Flow benchmark.
|
|
22
|
+
- [ASD-STE100 overview](https://www.asd-ste100.org/about_STE.html) and
|
|
23
|
+
[official FAQ](https://www.asd-ste100.org/STE_faq.html): the existing controlled
|
|
24
|
+
language and the distinction between procedures and descriptions.
|
|
25
|
+
- [Writing adaptation](../../skills/nobrainer-writing/references/plain-technical-english.md):
|
|
26
|
+
independently phrased guidance, without the dictionary or a conformance claim.
|
|
27
|
+
|
|
28
|
+
## Verification
|
|
29
|
+
|
|
30
|
+
The new paths were reviewed against a frozen source baseline and small writing
|
|
31
|
+
exercises. The baseline already supported end-to-end work: this change makes
|
|
32
|
+
the idea intake, requested SDD and final acceptance binding explicit. It is not
|
|
33
|
+
a measured reliability improvement.
|
|
34
|
+
|
|
35
|
+
An English procedure exercise preserved the literal command, production
|
|
36
|
+
prohibition, UNKNOWN status, named operator, permission and backup condition.
|
|
37
|
+
A Polish rewrite retained its language, exact quote and command, combined
|
|
38
|
+
conditions, unknown actor and uncertainty. These were same-session native
|
|
39
|
+
worker exercises, with MAIN inspecting the saved source and output. They were
|
|
40
|
+
not blind trials or clean-session skill discovery; the small holdout does not
|
|
41
|
+
establish general performance. No model benchmark or provider call was added.
|
|
42
|
+
|
|
43
|
+
A separate native source review found no verified actionable defect in its
|
|
44
|
+
inspected slice. It did not verify runtime discovery, all adapters or deployed
|
|
45
|
+
behavior. Repository validation and public distribution are separate gates;
|
|
46
|
+
exact CI and publication readback are linked from the release.
|
|
47
|
+
|
|
48
|
+
Local checks on 2026-10-02: both skill validators passed; the full Python
|
|
49
|
+
unit/archive suite passed 391 tests with 2 platform/environment skips; staged
|
|
50
|
+
Gitleaks found no secrets. Version consistency is checked by the suite.
|
|
51
|
+
These are repository results, not client-runtime acceptance. The site has its own
|
|
52
|
+
validator/tests and browser checks at 1024 × 800 and 390 × 844. Copying the idea
|
|
53
|
+
prompt must produce the visible text in the clipboard, and the technical
|
|
54
|
+
writing details must expand without horizontal overflow.
|
|
55
|
+
|
|
56
|
+
## Limits and rollback
|
|
57
|
+
|
|
58
|
+
No cross-client discovery, autonomous uptime, lower task cost, token savings,
|
|
59
|
+
formal STE compliance or superiority over another workflow is claimed. The
|
|
60
|
+
English mode preserves other requested languages and marketing styles.
|
|
61
|
+
|
|
62
|
+
For rollback, use the reviewed v2.0.2 source and the documented installer dry-run,
|
|
63
|
+
conflict and backup checks. The versioned installation source must stay present
|
|
64
|
+
while client links point to it. No user settings are changed by this source release.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# nobrainer-tech-flow 2.1.1 verification record
|
|
2
|
+
|
|
3
|
+
Source version: 2.1.1. This corrects the communication defaults introduced with
|
|
4
|
+
[2.1.0](v2.1.0.md). Publication is a separate tag and source-archive check.
|
|
5
|
+
|
|
6
|
+
## Scope
|
|
7
|
+
|
|
8
|
+
One Flow communication policy governs operational prose between agents and
|
|
9
|
+
user-facing replies. Agent exchanges default to plain technical English, while
|
|
10
|
+
user replies are written directly in the requested language. Team, Dispatcher and Sessions reference the same policy. The unchanged
|
|
11
|
+
bootstrap already routes to Flow, which owns that default. Existing task schemas,
|
|
12
|
+
source literals, language overrides, permissions and evidence remain binding.
|
|
13
|
+
|
|
14
|
+
Writing selects TECHNICAL for English technical artifacts when no other mode
|
|
15
|
+
is requested. Other languages use natural plain language with the same factual
|
|
16
|
+
contract. Marketing, creative work and author voice keep their purpose.
|
|
17
|
+
|
|
18
|
+
There is no additional translation call, provider, model setting, benchmark,
|
|
19
|
+
runtime process or skill. This policy concerns visible messages, not hidden
|
|
20
|
+
reasoning. It does not claim full ASD-STE100 compliance or performance savings.
|
|
21
|
+
|
|
22
|
+
## Evidence and limits
|
|
23
|
+
|
|
24
|
+
The frozen v2.1.0 baseline already passed the two small communication exercises;
|
|
25
|
+
its instructions did not mandate the agent-language default. This release makes
|
|
26
|
+
the policy explicit. The same two pressure cases and three fresh holdout
|
|
27
|
+
exercises passed meaning checks, including a Polish worker-language override,
|
|
28
|
+
exact code/JSON/quoted warnings, and a warm Polish marketing artifact. MAIN
|
|
29
|
+
checked the actual saved outputs and literal preservation. Same-session exercises are not a blind causal comparison
|
|
30
|
+
or proof that every client loads and follows the skill.
|
|
31
|
+
|
|
32
|
+
Release gates: source/link/version validators, adapter and installer-link
|
|
33
|
+
regressions, full Python tests, staged secret scan, semantic pressure and holdout
|
|
34
|
+
checks, source review, and separate release/archive readback. The release notes
|
|
35
|
+
link exact CI results after validation. No cross-client runtime or cost claim
|
|
36
|
+
is inferred from these gates.
|
|
37
|
+
|
|
38
|
+
## Rollback
|
|
39
|
+
|
|
40
|
+
Use the reviewed v2.1.0 source and the documented installation dry-run and
|
|
41
|
+
backup checks. No persisted schema or data migration is introduced. Keep the
|
|
42
|
+
source checkout present while client links point to it. Explicit user language
|
|
43
|
+
and style instructions override the new default without a rollback.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# nobrainer-tech-flow 2.2.0 verification record
|
|
2
|
+
|
|
3
|
+
The communication reference now chooses the simplest useful presentation and
|
|
4
|
+
closes non-trivial work with inspected proof and visible unfinished requirements.
|
|
5
|
+
Text remains the default; diagrams explain relationships; HTML needs useful
|
|
6
|
+
interaction. Explicit formats and artifact-only output take precedence. Video
|
|
7
|
+
requires a bounded purpose and available tools, with a text/storyboard fallback.
|
|
8
|
+
|
|
9
|
+
## Scope and weight
|
|
10
|
+
|
|
11
|
+
One existing reference owns these rules. The eighteen skills, bootstrap and skill
|
|
12
|
+
bodies are unchanged. No new renderer, provider, dependency, helper, data schema
|
|
13
|
+
or result store is shipped. The reference also makes two observed failure classes
|
|
14
|
+
explicit: machine-only output must not gain Markdown fences, and exact source
|
|
15
|
+
text must stay separate from process metadata. Other execution stages and their
|
|
16
|
+
workflow diagrams are unchanged; no diagram refresh is needed for this prose policy.
|
|
17
|
+
|
|
18
|
+
## Actual checks and limits
|
|
19
|
+
|
|
20
|
+
The [frozen inputs and raw answers](../evals/clear-results-v2.2.0.json) record
|
|
21
|
+
fresh local CLI processes on 3 October 2026, using an explicitly supplied
|
|
22
|
+
communication reference. Codex CLI 0.157.1 requested `gpt-6-astra` at `xhigh`;
|
|
23
|
+
its event stream does not independently identify the served model. Claude Code
|
|
24
|
+
2.1.286 requested `opus` at `xhigh`; returned usage identifies first-party
|
|
25
|
+
`claude-opus-5-5` for the text trials. The HTML artifact receipt reports both
|
|
26
|
+
`claude-opus-5-5` and `claude-opus-4-8`; the reason is unproven. Tools and external
|
|
27
|
+
actions were disabled for these probes.
|
|
28
|
+
No provider or client configuration was changed.
|
|
29
|
+
|
|
30
|
+
Each baseline answered three development cases; each first candidate answered
|
|
31
|
+
those three plus three fresh holdout cases. All per-case coarse assertions passed,
|
|
32
|
+
but independent review found two failures in the first candidate output: Codex
|
|
33
|
+
combined an exact error with the exit status; Claude fenced the outer JSON map.
|
|
34
|
+
Those failures remain in the record. After the narrow instruction clarification,
|
|
35
|
+
both clients passed a fresh single-task case: strict JSON, exact stdout, separate
|
|
36
|
+
integer exit status and unverified public work. This is a focused correction
|
|
37
|
+
check, not a re-score of the earlier run or proof of a quality gain.
|
|
38
|
+
|
|
39
|
+
Two earlier candidate artifacts were inspected and exercised by MAIN: a Python
|
|
40
|
+
stable-deduplication function passed six checks, including unhashable values,
|
|
41
|
+
order, input preservation and an iterator; a self-contained retry explanation
|
|
42
|
+
worked in the Codex browser at default, zero and four failures. Keyboard increment,
|
|
43
|
+
390-pixel layout without overflow and inert markup-like label text were checked.
|
|
44
|
+
These artifact checks bind the first candidate reference, before the format/literal
|
|
45
|
+
clarification. They do not establish autonomous client tool execution.
|
|
46
|
+
|
|
47
|
+
This is explicit-source behavior evidence, not automatic installed-skill discovery,
|
|
48
|
+
a full-task client benchmark, a matched competitor comparison or proof of lower
|
|
49
|
+
cost, faster work or better completion rates. Single runs do not estimate reliability.
|
|
50
|
+
The current models can still violate instructions; MAIN must inspect real outputs.
|
|
51
|
+
Video rendering, full client lifecycle and general compatibility remain unverified.
|
|
52
|
+
|
|
53
|
+
Required release gates are the structure/suite validators, full unit tests, staged
|
|
54
|
+
secret scan, independent source/output review and separate release/archive/site
|
|
55
|
+
readback. CI results belong to the published commit, not the initial failed local
|
|
56
|
+
run: that run encountered an installed `tests` namespace conflict, an intermittent
|
|
57
|
+
short-timeout case and a release-note link before its target was written.
|
|
58
|
+
|
|
59
|
+
## Rollback
|
|
60
|
+
|
|
61
|
+
Return to v2.1.1 through the documented installer preview/backup flow. No persisted
|
|
62
|
+
schema or migration is introduced. Keep the source checkout while client links
|
|
63
|
+
refer to it. A requested simpler format or explicit language overrides the defaults
|
|
64
|
+
without requiring rollback.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# v2.2.1: install Flow from npm and use the skills plugin
|
|
2
|
+
|
|
3
|
+
This release adds distribution paths without adding modules or a task-execution service. The eighteen skill bodies remain unchanged from v2.2.0.
|
|
4
|
+
|
|
5
|
+
- npm provides a named command to preview, apply and undo the existing client setup. Application retains a verified copy of release files at a stable profile path, so npx cache removal does not break installed links. Python 3.11+ is required for installation; help/version need only Node.
|
|
6
|
+
- A hook-free plugin ZIP contains the same skills, references and helpers, portable identity, OpenAI presentation metadata and Claude compatibility metadata.
|
|
7
|
+
- ChatGPT/Codex and Claude support skills plugins. Available tools and permissions remain the client's responsibility. Directory approval and client runtime acceptance are separate from package validation.
|
|
8
|
+
|
|
9
|
+
See [installation](../INSTALL.md) for npm commands, [native plugins](../CHAT_PLUGINS.md) for supported surfaces and [privacy](../PRIVACY.md) for the package's data boundary.
|
|
10
|
+
|
|
11
|
+
Verification records must distinguish packed-tarball installation, ZIP content checks, repository regression, npm publication and directory/client readback. A ZIP or a published npm tarball alone does not prove task performance in every client.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# nobrainer-tech-flow 2.3.0: delegate ready work and verify the result
|
|
2
|
+
|
|
3
|
+
Release date: 2026-10-12. Theme: delegation-first.
|
|
4
|
+
|
|
5
|
+
Use available native workers for independent work while the main session keeps
|
|
6
|
+
coordination, integration and acceptance in one place. For example, independent
|
|
7
|
+
implementation, documentation and test tasks can start together when their
|
|
8
|
+
inputs, write scopes, capacity and authorized usage allow it. The main session
|
|
9
|
+
inspects the returned artifacts before accepting the result.
|
|
10
|
+
|
|
11
|
+
## What changes
|
|
12
|
+
|
|
13
|
+
- In non-trivial work, every useful independent ready unit goes promptly to a
|
|
14
|
+
native worker, up to verified host capacity and authorized usage. The main
|
|
15
|
+
session coordinates, integrates, verifies and refills slots. If eligible ready
|
|
16
|
+
work stays in the main session while a slot is free, the plan records the
|
|
17
|
+
concrete reason. A missing measured speedup alone is not a reason to keep it
|
|
18
|
+
there.
|
|
19
|
+
- Each native worker receives a compact packet: `TASK`, `INPUTS`, `WRITE_SCOPE`,
|
|
20
|
+
`DEPENDENCIES`, `METHOD`, `MODEL_AND_EFFORT`, `AUTHORITY`, `ACCEPTANCE`,
|
|
21
|
+
`BUDGET_AND_STOP` and `RETURN`. The packet carries the task's actual constraints
|
|
22
|
+
and proof requirements.
|
|
23
|
+
- After each completion, the main session audits the result and refills the free
|
|
24
|
+
slot with ready work without waiting for unrelated slow workers. Waiting,
|
|
25
|
+
suspended and uncertain workers carry a reason and a bounded next observation.
|
|
26
|
+
- Before a large or risky group of writers starts, a builder-readiness check
|
|
27
|
+
identifies missing implementation inputs. Routine choices stay within existing
|
|
28
|
+
authority; material unresolved decisions return to the owner.
|
|
29
|
+
|
|
30
|
+
The [delivery contract](../../skills/nobrainer-tech-flow/references/delivery.md),
|
|
31
|
+
[team assignments](../../skills/nobrainer-team/SKILL.md) and
|
|
32
|
+
[dispatcher](../../skills/nobrainer-dispatcher/SKILL.md) own these rules. The
|
|
33
|
+
portfolio remains eighteen skills. This release changes workflow instructions;
|
|
34
|
+
it adds no task-execution service.
|
|
35
|
+
|
|
36
|
+
## Safety and client limits
|
|
37
|
+
|
|
38
|
+
One writer owns each mutable state. Exact worker IDs bind dispatch and readback;
|
|
39
|
+
an uncertain send must be reconciled before another attempt can create a
|
|
40
|
+
duplicate. Delegation remains flat unless recursion is expressly authorized.
|
|
41
|
+
Visible conversations require an explicit owner request. The main session
|
|
42
|
+
audits artifacts and preserves quota and cost ceilings.
|
|
43
|
+
|
|
44
|
+
Native worker availability, tool access and capacity depend on the client. When
|
|
45
|
+
usable native workers are unavailable, the main session continues authorized
|
|
46
|
+
work and reports the limitation. Passing source checks does not prove that every
|
|
47
|
+
client follows the contract during a real task.
|
|
48
|
+
|
|
49
|
+
## Verification record
|
|
50
|
+
|
|
51
|
+
Local checks on the final candidate bytes (macOS, Python 3.14):
|
|
52
|
+
|
|
53
|
+
- `python3 scripts/validate_skills.py` and `python3 scripts/validate_skills.py --suite`:
|
|
54
|
+
both passed.
|
|
55
|
+
- `python3 -m unittest tests.test_delegation_contract`: 7 source-contract tests
|
|
56
|
+
passed, including the route from ordinary fan-out to the builder-readiness check.
|
|
57
|
+
- `python3 -m unittest discover -s tests`: 403 tests ran; all passed except 2
|
|
58
|
+
skipped platform-specific tests.
|
|
59
|
+
- Root instructions stay within budget: `AGENTS.md` and `CLAUDE.md` are
|
|
60
|
+
identical at 204 lines and 1,600 words, the entry skill has 239 lines and 1,748
|
|
61
|
+
words, the bootstrap has 220 words and the portfolio has eighteen skills.
|
|
62
|
+
- A secret scan with the repository's gitleaks configuration found no leaks.
|
|
63
|
+
|
|
64
|
+
An independent release review found one routing gap: ordinary fan-out did not
|
|
65
|
+
reach the builder-readiness check. The delivery contract now links it, and a
|
|
66
|
+
regression test covers the link. The pull request's Validate workflow runs the
|
|
67
|
+
repository checks on Linux, macOS and Windows for the exact candidate commit; the
|
|
68
|
+
GitHub release records that run.
|
|
69
|
+
|
|
70
|
+
No runtime benchmark was run for this release. No measured speed or token saving
|
|
71
|
+
is claimed. Static contract tests and repository regression checks do not
|
|
72
|
+
establish live scheduling behavior, task quality or a performance advantage over
|
|
73
|
+
another workflow.
|
|
74
|
+
|
|
75
|
+
## Distribution and rollback
|
|
76
|
+
|
|
77
|
+
npm registry publication is still pending owner publisher access. The public
|
|
78
|
+
[npm latest endpoint](https://registry.npmjs.org/nobrainer-tech-flow/latest)
|
|
79
|
+
returned HTTP 404 on 2026-10-11. The v2.3.0 commands in
|
|
80
|
+
[installation](../INSTALL.md) become available after registry publication and
|
|
81
|
+
readback. A source release or locally packed tarball does not establish that.
|
|
82
|
+
|
|
83
|
+
The separate [native plugin export](https://github.com/nobrainer-tech/nobrainer-tech-flow-plugin)
|
|
84
|
+
follows the canonical GitHub release and its checked plugin ZIP. Export
|
|
85
|
+
verification, directory approval and target-client acceptance each need their
|
|
86
|
+
own readback.
|
|
87
|
+
|
|
88
|
+
To roll back, return to v2.2.1 through the documented installer preview and undo
|
|
89
|
+
flow, then restore the reviewed source. Keep retained source files while any
|
|
90
|
+
client links refer to them.
|
|
91
|
+
|
|
92
|
+
Sources (inspiration only): [GSD Core](https://github.com/open-gsd/gsd-core) for
|
|
93
|
+
fresh-context parallel waves; [oh-my-openagent v5.1.29](https://github.com/code-yeongyu/oh-my-openagent/releases/tag/v5.1.29)
|
|
94
|
+
for background-task states; and a public workflow pack's recent builder
|
|
95
|
+
feasibility check and parallel-dispatch guidance, attributed on the
|
|
96
|
+
[website comparison pages](https://nobrainer.tech/flow/compare/). These are
|
|
97
|
+
design references, not measured comparisons.
|