Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,19 @@ Each release of Fetchproof, newest first. The version is `KIT_VERSION` in
the received digests are in its history (`git show 7470287:BUNDLE_INDEX.md`). `bundle.mjs` and
`doctor` report what they did before: 66 of 80 unchanged, 14 changed as expected. One path is
kept as written, `e7f4d76:research-kit/lib/finding.mjs`, because it names a commit's tree.
- The shipped lead-orchestrator skill is version 2.0 (ADR-0190), the owner's later text of the
skill the kit vendored as 1.x. It keeps an on-disk run ledger (`RUN.md`, described in
`references/run-ledger.md`), so a run that stops is resumed from its last checkpoint instead of
being done again, and it adds careful execution, a pre-mortem per unit, pipelined review and a
failure-recovery table. It also ships `references/project-facts-template.md` and
`references/report-templates.md`, which 1.x named without shipping. The shipped auto-build
already ran lead-orchestrator's Phase R and kept its stage table in `RUN.md`, neither of which
1.x had; its ledger pointer now names `references/run-ledger.md`. The kit's own
`references/fetchproof.md` still governs the kit protocol, and in a Fetchproof project the
project's conventions come before the templates. break-test now says that shell commands
issued in parallel share one working directory, so every path is written absolute. Run
`node fetchproof/bin/install.mjs` to update the deployed copies; a skill folder whose
`SKILL.md` you changed is left as it is and listed as a conflict.
- `handoff OK` now says how old the snapshot is: the line ends with `captures fetched
2026-09-13..2026-10-02 (oldest 37 days)`, the first and last days on which the captures the
evidence rows name were fetched, and the age of the oldest. A row a later capture of the same
Expand Down
41 changes: 27 additions & 14 deletions NOTICE
Original file line number Diff line number Diff line change
Expand Up @@ -28,24 +28,37 @@ Vendored skills

The skill directories under fetchproof/skills/ named in REUSE.toml (architecture-pass,
auto-build, brainstorming, break-test, careful-coding, four-dimension-audit, gap-audit,
improve-codebase-architecture, lead-orchestrator, subproject-discovery) come from
StepenkoAnatoli/SkillsMDs at commit 3f2d2fc6627d63ea93ff97d4d33845a753db16cc and are
licensed under the Apache License 2.0 (LICENSES/Apache-2.0.txt). They are shipped as
received, apart from the file renames the skill format forces and six auto-build files
changed so they agree with the kit's rules (SKILL.md, references/mandate.md,
improve-codebase-architecture, lead-orchestrator, subproject-discovery) are licensed under
the Apache License 2.0 (LICENSES/Apache-2.0.txt). All but lead-orchestrator come from
StepenkoAnatoli/SkillsMDs at commit 3f2d2fc6627d63ea93ff97d4d33845a753db16cc. They are
shipped as received, apart from the file renames the skill format forces and six auto-build
files changed so they agree with the kit's rules (SKILL.md, references/mandate.md,
references/merge-protocol.md, assets/claude-md-auto-build-mandate.md,
scripts/pr-readiness.sh, references/stage-handoffs.md). The first five were adapted on
2026-10-06; the approval-summary corrections and stage-handoffs adaptation are dated
2026-10-08. The kit's rename to Fetchproof on 2026-10-20 (ADR-0186) changed its old
name, and the paths and variables that spelled it, in those six files and in eight more:
name, and the paths and variables that spelled it, in those six files and in six more:
break-test's SKILL.md, references/probe-recipes.md and references/fetchproof.md (received
as references/research-kit.md), gap-audit's, subproject-discovery's and lead-orchestrator's
SKILL.md, lead-orchestrator's references/agent-briefs.md and auto-build's
references/requirements-and-traceability.md. Each changed file says so at its top;
the adaptations are listed in
docs/adr/0146-the-kit-ships-a-skill-set-and-a-role-aware-router.md and the complete-review
clarification in docs/adr/0150-complete-review-and-git-corpus-ownership-in-builder-handoffs.md. Receipt hashes remain
historical evidence, not digests of the subsequently adapted files. The other skills
under fetchproof/skills/, and the two references/fetchproof.md files beside
as references/research-kit.md), gap-audit's and subproject-discovery's SKILL.md, and
auto-build's references/requirements-and-traceability.md. On 2026-10-22 (ADR-0190),
break-test's SKILL.md and references/probe-recipes.md took one lesson, a sentence and a
table row, from the owner's claude.ai account copy of break-test, and auto-build's SKILL.md
again names lead-orchestrator's references/run-ledger.md for the run ledger, as received.

lead-orchestrator is version 2.0, the same author's later text of the skill SkillsMDs held
as 1.x. It was received on 2026-10-22 from the owner's claude.ai account copy (dated
2026-10-04), under the Apache License 2.0 like the rest of the set; ADR-0190 records each
received file's sha256. The kit's rename changed its SKILL.md, references/agent-briefs.md,
references/changelog.md and references/project-facts-template.md; its
references/careful-execution.md, references/report-templates.md and references/run-ledger.md
are as received. The skill's own integration reference is not shipped.

Each changed file says so at its top. The adaptations are listed in
docs/adr/0146-the-kit-ships-a-skill-set-and-a-role-aware-router.md, the complete-review
clarification in docs/adr/0150-complete-review-and-git-corpus-ownership-in-builder-handoffs.md,
and the 2026-10-22 changes in
docs/adr/0190-the-kit-vendors-lead-orchestrator-2-and-break-tests-parallel-shell-lesson.md.
Receipt hashes remain historical evidence, not digests of the subsequently adapted files. The
other skills under fetchproof/skills/, and the two references/fetchproof.md files beside
lead-orchestrator and auto-build (break-test's, above, was received), are the kit's own
work, under its LICENSE.
25 changes: 22 additions & 3 deletions REUSE.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ SPDX-License-Identifier = "LicenseRef-Captured-Page"
# and shipped with recorded file renames and six marked auto-build adaptations (the
# original five plus stage-handoffs; dated adaptations in ADR-0146 and ADR-0150), and with the kit's
# rename (ADR-0186) marked in each file it changed. Receipt hashes are
# retained as historical provenance. The kit's own notes beside
# retained as historical provenance. break-test also carries one lesson from the owner's
# claude.ai account copy, and auto-build's ledger pointer names lead-orchestrator's
# references/run-ledger.md again (ADR-0190), each marked. The kit's own notes beside
# lead-orchestrator and auto-build (references/fetchproof.md) are the kit's work; break-test's
# references/fetchproof.md was received.
[[annotations]]
Expand All @@ -34,10 +36,27 @@ path = [
"fetchproof/skills/four-dimension-audit/**",
"fetchproof/skills/gap-audit/**",
"fetchproof/skills/improve-codebase-architecture/**",
"fetchproof/skills/lead-orchestrator/SKILL.md",
"fetchproof/skills/lead-orchestrator/references/agent-briefs.md",
"fetchproof/skills/subproject-discovery/**",
]
precedence = "override"
SPDX-FileCopyrightText = "Anatoli Stepenko - StepenkoAnatoli/SkillsMDs"
SPDX-License-Identifier = "Apache-2.0"

# lead-orchestrator 2.0 (ADR-0190): the same author's later text of the skill the set received
# as 1.x, from the owner's claude.ai account copy (2026-10-04), received on 2026-10-22 under
# Apache-2.0 like the rest of the set, with the kit's rename (ADR-0186) marked in each file it
# changed. ADR-0190 records the sha256 of each received file. Its references/fetchproof.md is
# the kit's note (above), not received.
[[annotations]]
path = [
"fetchproof/skills/lead-orchestrator/SKILL.md",
"fetchproof/skills/lead-orchestrator/references/agent-briefs.md",
"fetchproof/skills/lead-orchestrator/references/careful-execution.md",
"fetchproof/skills/lead-orchestrator/references/changelog.md",
"fetchproof/skills/lead-orchestrator/references/project-facts-template.md",
"fetchproof/skills/lead-orchestrator/references/report-templates.md",
"fetchproof/skills/lead-orchestrator/references/run-ledger.md",
]
precedence = "override"
SPDX-FileCopyrightText = "Anatoli Stepenko - lead-orchestrator 2.0"
SPDX-License-Identifier = "Apache-2.0"
2 changes: 1 addition & 1 deletion docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ folder first; started anywhere else, it crashed at import before any test ran -
- `hooks/edit-gate.mjs` — the edit-time adapter; `permissionDecision` semantics per E-05. The wire keys (`hookEventName: 'PreToolUse'`, `hookSpecificOutput`) are the runtime's protocol, not the kit's vocabulary (ADR-0012). A call whose every target (`tool_input.file_path` / `notebook_path`, resolved against the payload's `cwd`) is phase-1 work - under `research/`, or the project's `SCAFFOLDING` - is allowed unjudged, by `lib/gate.mjs`'s `isPhaseOneEdit` (2026-09-27). The hook never looked at the file, so while phase 1 was open it interrupted every edit to `research/MAP.md` and `DISCOVERY.md`: the work phase 1 is made of. The map is not exempt, because an edit gives it content. A named file is judged by its own project (#309, ADR-0182): `projectsOf` bounds the file by its repository (`repositoryTop`, from the nearest existing ancestor directory, in the file's own spelling, asked only once some ancestor is gated) or, outside one, by the cwd's project; a gated bound judges alone, as the commit gate does, else the nearest `isProjectBelowTop` ancestor. The `research/raw/` and `GATE_OFF` denials hold for every project above the file within the bound - a decoy `research/research/` had made `research/` the nearest project and turned both denials into asks (review 2026-10-18). A file under no project is allowed as not gated, each distinct project an edit touches is evaluated, and an ask names the project when it is not the cwd. It had judged by the cwd: from a monorepo's top level a Write to `packages/a/src/app.js` was allowed, and from inside a failing project a Write to `~/.bashrc` asked. A call that names no file is still judged by the cwd: the cwd if gated, else its repository's top level, walked up to in the cwd's own spelling (ADR-0053): from `src/` the hook answered "not a gated project" to every edit. **A target inside `research/raw/` is denied** (2026-09-27, ADR-0059), before the phase-1 allowance and whatever the verdict: captures and the ledger are written only by `research.mjs`. Only `editGate.mode=off` and `research/GATE_OFF` let such an edit through. **Creating `research/GATE_OFF` is also denied before the phase-1 allowance** (2026-10-10 audit), on a passing or failing verdict, with the same deliberate off-switches. The exact target and descendants are protected: a Write into a descendant creates the directory that the override existence check accepts. Sibling names remain ordinary research. This protects the matched edit tools; shell writes and operator-controlled hooks remain outside that boundary. It had been allowed as phase-1 work, and a forged ledger line with a correct hash passes preflight. The subfolder discovery (`git rev-parse --show-toplevel`) runs with git's repository-location variables removed (2026-09-28): a `GIT_DIR`/`GIT_WORK_TREE` carried by the editor process made git name another repository, and code edited from `src/` was allowed as "not a gated project". A payload that is valid JSON but not an object, or whose `cwd`/`project_dir` is not a string, reads as no payload and the process cwd (2026-09-29, Arena break test): either had crashed the hook with a raw stack and exit 1 on every edit. Asks `stdinIsReadable()` before reading the payload and allows, with the reason, when stdin is a terminal: `readFileSync(0)` on a TTY waited forever for an end of file (break-test PR #185, 2026-10-01).
- `schemas/` — JSON Schema contracts consumed by `release-validator.mjs`; schemas are
read-only inputs and are never generated or rewritten by the validator.
- `skills/<name>/SKILL.md` — the skill set (ADR-0146): one directory per skill, deployed as siblings of research-first in every skill root and `--into` a project. `skill-router` routes by role and gate state, and its `## Skill table` (held by `test/skill-set.test.mjs`) never sends a builder to a skill that collects. Ten directories come from the recorded SkillsMDs baseline (Apache-2.0, `REUSE.toml`), with renames and marked auto-build adaptations listed in NOTICE and ADR-0146; the rest are the kit's own. Guidance only (ADR-0006): no skill passes a gate, and owner consent/prose duties remain review responsibilities. Router/build handoffs require complete/current review, preserve authored unstamped and local received-package compatibility, and keep Git review records with the collector (ADR-0150).
- `skills/<name>/SKILL.md` — the skill set (ADR-0146): one directory per skill, deployed as siblings of research-first in every skill root and `--into` a project. `skill-router` routes by role and gate state, and its `## Skill table` (held by `test/skill-set.test.mjs`) never sends a builder to a skill that collects. Ten directories are received skills under Apache-2.0 (`REUSE.toml`): nine from the recorded SkillsMDs baseline, and lead-orchestrator 2.0 from the owner's account copy (ADR-0190), with renames and marked adaptations listed in NOTICE, ADR-0146 and ADR-0190; the rest are the kit's own. Guidance only (ADR-0006): no skill passes a gate, and owner consent/prose duties remain review responsibilities. Router/build handoffs require complete/current review, preserve authored unstamped and local received-package compatibility, and keep Git review records with the collector (ADR-0150).
- `skill/SKILL.md`, `template/`, `recipes/` — the protocol as text. Recipes carry
machine-readable frontmatter dimensions (specializations of `dimensions.mjs`, never replacements).
- `START_HERE.md` (kit root *and* `template/`) — the operator's twin of `AGENTS.md`:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# ADR-0146: The kit ships a skill set and a role-aware router

- **Date:** 2026-10-06
- **Status:** accepted
- **Status:** superseded in part by ADR-0190 (lead-orchestrator's received baseline is the owner's account copy of version 2.0, which ships the two references decision 3 noted as missing; auto-build's ledger pointer names lead-orchestrator's `references/run-ledger.md` again; break-test takes one lesson from the account copy; the rest stands)
- **Area:** lifts the feature freeze (ADR-0117) for one item: **the kit ships a skill set
plus a role-aware router skill, deployed by the existing `install.mjs` path.** No
command, flag, transport, provider, check or configuration key is added; `skillRoots`
Expand Down
Loading
Loading