diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md new file mode 100644 index 0000000..5cc742f --- /dev/null +++ b/docs/HANDOFF.md @@ -0,0 +1,16 @@ +# telegram-dev: evidence navigation handoff + +The [verification index](evidence/verification.md) routes to existing evidence for +published version 0.2.4. The [FW00 packet](evidence/fw00-verification-index-20261013/README.md) +owns this docs-only change, its source ledger, checks and remaining gates. + +Completed in the earlier source/publication wave: the [release packet](evidence/releases/2026-10-13-member-gates/README.md#published-readback) +records the original tag, successful run and package readback. This navigation +change does not rerun those historical events or assert installed/native quality. + +Exact next task: integrate the frozen docs-only candidate through genuine required +checks and normal merge. Independent navigation/payload review and the owner's +local command set passed; the [subsequent gate receipt](evidence/fw00-verification-index-20261013/owner-gates.json) +preserves their exact sources. A successor containing only these receipts receives +final structural, link and package-conservation checks before promotion. No new +version, tag, publication, provider call or host-profile update belongs here. diff --git a/docs/evidence/fw00-verification-index-20261013/README.md b/docs/evidence/fw00-verification-index-20261013/README.md new file mode 100644 index 0000000..287a99b --- /dev/null +++ b/docs/evidence/fw00-verification-index-20261013/README.md @@ -0,0 +1,100 @@ +# FW00: navigable verification evidence + +Status: FOCUSED PASS; independent audit and required broader owner gates pending. + +## Objective and source contract + +Expose this owner's existing verification evidence at the family reader's expected +path, without claiming a new historical run. The operator's autonomous completion +wave authorizes this docs-only packet. The selected canonical main is +[4ffb10ce1b92a599c2214327ea4d878ab514ed6b](https://github.com/ssheleg/telegram-dev/commit/4ffb10ce1b92a599c2214327ea4d878ab514ed6b), +manifest version 0.2.4; remote main was read before creating this isolated branch. + +Read CLAUDE.md, CONTRIBUTING.md, .claude/agent-sync.json and the existing member-gate, +header-correction and published-readback packets. No docs/HANDOFF.md or +`docs/evidence/verification.md` exists at that base. Evidence already has an owner: +[release and readback](../releases/2026-10-13-member-gates/README.md), its adjacent +machine receipt and [source controls](../member-gates-20261013/README.md). +Do not copy their metrics or reinterpret historical passes as a current full run. + +The hub's [actual ledger reader](https://github.com/ssheleg/sshlg-skills/blob/0016e058c86b3a39d0df1e06097b6c96de496c58/test/validate.py#L1878) +reads the newest semver in headings and compares package.json. Absence is disclosed; +lagging records are ratcheted. A matching heading proves navigation/version +alignment, not truth of the linked results or native quality. + +The source-closure [central map](https://github.com/ssheleg/sshlg-skills/blob/0016e058c86b3a39d0df1e06097b6c96de496c58/docs/evidence/completion-1013/r30-eleven-owner-closure.md) +and [publication index](https://github.com/ssheleg/sshlg-skills/blob/0016e058c86b3a39d0df1e06097b6c96de496c58/docs/evidence/completion-1013/member-release-readback.md) +are cross-owner navigation; the local owner receipt remains the source of facts. + +Contradictions: the missing family entry point was not missing verification work. +A new heading must not silently upgrade that work's source or acceptance scope. + +## Requirements and sequence + +1. Add a short versioned verification index linking existing evidence, with original + source/run bounds and explicit installed/native/model limits. Add a handoff link. +2. Leave prior receipts, package/version surfaces, published content and runtime + untouched. Take a local owner lease before edits; no board IDs are allocated. +3. Reproduce the missing-ledger disclosure with the actual extracted hub reader; + verify current, absent, versionless and stale-heading behavior on owned fixtures. +4. Validate local links, compare all published-file hashes from the owner receipt, + compare npm dry-run path set, and run the owner structural validator. Record + commands/exit/disclosures and package parity. No provider/native calls. +5. Freeze and push a docs-only branch for independent audit. Required broader owner + gates enter the coordinator's queue after Task Pipeline's full run; no broad + invocation, tag, version bump or publication is performed in this slice. + +## Handoff + +Exact next task: create and check the pointer ledger, then obtain independent +source-bound acceptance. A later coordinator may integrate normally and update the +hub gitlink while retaining the published version only after package parity holds. +No mutable installed-profile or human verification claim is introduced. + +Skills: task-pipeline (delivery), evidence-docs (source limits), agent-sync +(local advisory lease), make-skill (package preservation). + +## Focused observations + +[Current local receipt](focused.json) records the actual structural command, +output and exit 0, local link resolution and package parity. All 22 +files from the existing published receipt match both SHA256 and size; the npm +`pack --dry-run --json --ignore-scripts` path set is identical. No tarball was +published or downloaded during this change. The owner structural disclosure for +an absent enclosing umbrella remains separate from native/model acceptance. + +[Hub reader replay](hub-reader.json) records four cases using the actual extracted +hub function: absent entry discloses the baseline gap; the new current heading +is accepted; no version is disclosed; a stale heading triggers the existing lag +ratchet. Owned fixture directories were removed. These controls prove only the +reader's existing navigation contract, not the truth of historical outcomes. + +All existing files, including prior receipts, are preserved byte-for-byte. The +new files are this packet and its check receipts, verification.md and HANDOFF.md. +No package version, installer, plugin, skill, validator or workflow changed. +The owner's broader commands from CLAUDE.md/CONTRIBUTING.md are **not rerun** in +this focused slice; their admission is queued after the coordinator's Task +Pipeline full run. Historical complete results remain bound to their own source. +Next: independent audit of the frozen docs and parity receipt before integration. + +## Subsequent owner gates and independent acceptance + +The initial focused snapshot above remains historical. After the coordinator +released the serial slot, the complete locally required command set ran at +`5d5ecbf4693bcb8c1fd279bb34d3e726127ecbcf` with owned scratch and a disk guard +(admit 400 MiB, stop below 200 MiB). [Process receipts](owner-gates.json) +and [exact command outputs](owner-gate-logs.json.gz) preserve each actual exit, +source identity, digest and disclosure. No disk stop occurred. + +- `npm test`: exit 0. +- `npm run test:negatives`: exit 0. + +The [independent navigation/payload peer](https://github.com/ssheleg/sshlg-skills/blob/a155725e46a0f11ddc4073fb9e337916c0194181/docs/evidence/completion-1013/fw00-navigation-peer.json) +accepted the initial three-owner index slice. It verified all 81 published files, +three npm path sets, 42 links and the actual hub reader; those family-wide counts +are not per-owner totals. This successor adds gate evidence and updates the current +handoff only. No payload or test implementation changed. + +Next: freeze the evidence-only successor, verify its structural/link/package +conservation, then use one explicit ready-for-review candidate and genuine required +checks before normal integration. No version, tag or package release is needed. diff --git a/docs/evidence/fw00-verification-index-20261013/focused.json b/docs/evidence/fw00-verification-index-20261013/focused.json new file mode 100644 index 0000000..bf28524 --- /dev/null +++ b/docs/evidence/fw00-verification-index-20261013/focused.json @@ -0,0 +1,80 @@ +{ + "source_base": "4ffb10ce1b92a599c2214327ea4d878ab514ed6b", + "package_version": "0.2.4", + "published_receipt": "docs/evidence/releases/2026-10-13-member-gates/published-readback.json", + "payload_files_checked": 22, + "all_hashes_and_sizes_match": true, + "npm_dry_run_exit": 0, + "npm_path_set_equal": true, + "local_links": [ + { + "from": "docs/evidence/verification.md", + "target": "releases/2026-10-13-member-gates/README.md#published-readback" + }, + { + "from": "docs/evidence/verification.md", + "target": "releases/2026-10-13-member-gates/published-readback.json" + }, + { + "from": "docs/evidence/verification.md", + "target": "member-gates-20261013/README.md" + }, + { + "from": "docs/evidence/verification.md", + "target": "member-gates-headers-20261013.md" + }, + { + "from": "docs/evidence/verification.md", + "target": "backlog.md" + }, + { + "from": "docs/evidence/verification.md", + "target": "fw00-verification-index-20261013/README.md" + }, + { + "from": "docs/evidence/verification.md", + "target": "../HANDOFF.md" + }, + { + "from": "docs/HANDOFF.md", + "target": "evidence/verification.md" + }, + { + "from": "docs/HANDOFF.md", + "target": "evidence/fw00-verification-index-20261013/README.md" + }, + { + "from": "docs/HANDOFF.md", + "target": "evidence/releases/2026-10-13-member-gates/README.md#published-readback" + }, + { + "from": "docs/evidence/fw00-verification-index-20261013/README.md", + "target": "../releases/2026-10-13-member-gates/README.md" + }, + { + "from": "docs/evidence/fw00-verification-index-20261013/README.md", + "target": "../member-gates-20261013/README.md" + }, + { + "from": "docs/evidence/fw00-verification-index-20261013/README.md", + "target": "focused.json" + }, + { + "from": "docs/evidence/fw00-verification-index-20261013/README.md", + "target": "hub-reader.json" + } + ], + "structural": { + "command": "python3 test/validate.py", + "exit_code": 0, + "stdout": " unlooked: routed triggers \u2014 no sshlg-skills umbrella above this checkout\nOK: telegram-dev structurally valid (15 checks, 3 skills, v0.2.4)\n", + "stderr": "" + }, + "broad_owner_gates": "QUEUED_AFTER_TP_FULL", + "native_provider_model": "NOT_RUN", + "indexed_document_sha256": { + "docs/evidence/verification.md": "3ec1f97833e8f18978313a37c9626b07744d814e731491883ded18d5c72973f9", + "docs/HANDOFF.md": "02ced5519f8340e30c84bb2cb561d11782eb0c96a2931e79847aa30f86c23664", + "docs/evidence/fw00-verification-index-20261013/README.md": "f428af816af5c68f215b51e04469e24624584b49fb48a3263b15f2a1d04a05ec" + } +} diff --git a/docs/evidence/fw00-verification-index-20261013/hub-reader.json b/docs/evidence/fw00-verification-index-20261013/hub-reader.json new file mode 100644 index 0000000..8322b56 --- /dev/null +++ b/docs/evidence/fw00-verification-index-20261013/hub-reader.json @@ -0,0 +1,44 @@ +{ + "hub_source": "0016e058c86b3a39d0df1e06097b6c96de496c58", + "reader_source_sha256": "502581d30eab5b80666970e41e47191c0dbd92639ed080ef568e1a0cfb5d5f41", + "method": "Execute exact extracted hub function against owned temporary package/ledger fixtures; only navigation/version contract, not result quality.", + "cases": [ + { + "case": "absent baseline", + "result": { + "disclosures": [ + "member: no verification ledger" + ], + "errors": [] + } + }, + { + "case": "current", + "result": { + "disclosures": [], + "errors": [] + } + }, + { + "case": "versionless", + "result": { + "disclosures": [ + "member: the verification ledger records no version at all, so nothing says which artifact its rows were confirmed against" + ], + "errors": [] + } + }, + { + "case": "stale", + "result": { + "disclosures": [ + "member: the verification ledger's newest record is 0.0.0 and package.json ships 0.2.4 \u2014 its rows describe an artifact that is no longer the shipped one" + ], + "errors": [ + "1 member ledger(s) describe a version older than they ship (member) and the ratchet in test/validate.py stands at 0. A member's ledger is fixed in that member's own release; this figure is lowered when one catches up and is never raised to match a regression" + ] + } + } + ], + "owned_temporary_removed": true +} diff --git a/docs/evidence/fw00-verification-index-20261013/owner-gate-logs.json.gz b/docs/evidence/fw00-verification-index-20261013/owner-gate-logs.json.gz new file mode 100644 index 0000000..17aea75 Binary files /dev/null and b/docs/evidence/fw00-verification-index-20261013/owner-gate-logs.json.gz differ diff --git a/docs/evidence/fw00-verification-index-20261013/owner-gates.json b/docs/evidence/fw00-verification-index-20261013/owner-gates.json new file mode 100644 index 0000000..ccb9cf9 --- /dev/null +++ b/docs/evidence/fw00-verification-index-20261013/owner-gates.json @@ -0,0 +1,71 @@ +{ + "schema": 1, + "source": "5d5ecbf4693bcb8c1fd279bb34d3e726127ecbcf", + "commands": [ + { + "argv": [ + "npm", + "test" + ], + "started_utc": "2026-10-13T11:36:12.134447+00:00", + "log": "/tmp/fw00-telegram-dev-gate-0.log", + "owned_scratch": "/tmp/fresh-fw00-telegram-dev-3fec499e7e8f49a282d3335bbcfbc717", + "admitted_free_bytes": 504946688, + "owned_pid": 13565, + "exit_code": 0, + "disk_stopped": false, + "timed_out": false, + "minimum_free_bytes": 504922112, + "elapsed_seconds": 3.025, + "log_sha256": "455d56dfdf89ce1437b26f0751947869878218f1def847b6f29ab00a4d6e1862", + "source_unchanged": true, + "worktree_clean": true, + "scratch_entries": [ + "node-compile-cache" + ], + "scratch_removed": true, + "owned_cleanup": { + "proof": "Fresh empty UUID directory created and recorded before this exact child process; terminal PASS; only node-compile-cache descendants remained; all same uid, no symlinks.", + "files": 95, + "bytes": 308780 + } + }, + { + "argv": [ + "npm", + "run", + "test:negatives" + ], + "started_utc": "2026-10-13T11:36:15.187481+00:00", + "log": "/tmp/fw00-telegram-dev-gate-1.log", + "owned_scratch": "/tmp/fresh-fw00-telegram-dev-4a2600f13ba442f89223a7cfa7dd68f2", + "admitted_free_bytes": 623054848, + "owned_pid": 14093, + "exit_code": 0, + "disk_stopped": false, + "timed_out": false, + "minimum_free_bytes": 620437504, + "elapsed_seconds": 7.05, + "log_sha256": "8f0dcd578b43e308c2b28c8b17b76161f5493c4491a8df6ae7b8b81773ca97c0", + "source_unchanged": true, + "worktree_clean": true, + "scratch_entries": [ + "node-compile-cache" + ], + "scratch_removed": true, + "owned_cleanup": { + "proof": "Fresh empty UUID directory created and recorded before this exact child process; terminal PASS; only node-compile-cache descendants remained; all same uid, no symlinks.", + "files": 93, + "bytes": 305524 + } + } + ], + "all_exit_zero": true, + "source_unchanged": true, + "worktree_clean_at_checks": true, + "admission_bytes": 419430400, + "stop_bytes": 209715200, + "independent_peer": "https://github.com/ssheleg/sshlg-skills/blob/a155725e46a0f11ddc4073fb9e337916c0194181/docs/evidence/completion-1013/fw00-navigation-peer.json", + "logs": "owner-gate-logs.json.gz", + "limits": "Local owner gates and pointer navigation only. No native/model acceptance, version change, publication or installed update. Later receipt-only successor still needs final structural/link/package checks and genuine candidate CI." +} diff --git a/docs/evidence/fw00-verification-index-20261013/successor-checks.json b/docs/evidence/fw00-verification-index-20261013/successor-checks.json new file mode 100644 index 0000000..e3efbca --- /dev/null +++ b/docs/evidence/fw00-verification-index-20261013/successor-checks.json @@ -0,0 +1,99 @@ +{ + "gated_source": "5d5ecbf4693bcb8c1fd279bb34d3e726127ecbcf", + "successor_scope": "Only task-owned docs and process receipts since the exact owner command set; implementation and all packaged bytes unchanged.", + "checks": { + "structure": { + "argv": [ + "python3", + "-B", + "test/validate.py" + ], + "exit_code": 0, + "stdout": " unlooked: routed triggers \u2014 no sshlg-skills umbrella above this checkout\nOK: telegram-dev structurally valid (15 checks, 3 skills, v0.2.4)\n", + "stderr": "" + }, + "diff": { + "argv": [ + "git", + "diff", + "--check" + ], + "exit_code": 0, + "stdout": "", + "stderr": "" + } + }, + "published_payload_files_equal": 22, + "npm_pathset_equal": true, + "local_links_resolved": [ + { + "source": "docs/HANDOFF.md", + "target": "evidence/verification.md" + }, + { + "source": "docs/HANDOFF.md", + "target": "evidence/fw00-verification-index-20261013/README.md" + }, + { + "source": "docs/HANDOFF.md", + "target": "evidence/releases/2026-10-13-member-gates/README.md#published-readback" + }, + { + "source": "docs/HANDOFF.md", + "target": "evidence/fw00-verification-index-20261013/owner-gates.json" + }, + { + "source": "docs/evidence/verification.md", + "target": "releases/2026-10-13-member-gates/README.md#published-readback" + }, + { + "source": "docs/evidence/verification.md", + "target": "releases/2026-10-13-member-gates/published-readback.json" + }, + { + "source": "docs/evidence/verification.md", + "target": "member-gates-20261013/README.md" + }, + { + "source": "docs/evidence/verification.md", + "target": "member-gates-headers-20261013.md" + }, + { + "source": "docs/evidence/verification.md", + "target": "backlog.md" + }, + { + "source": "docs/evidence/verification.md", + "target": "fw00-verification-index-20261013/README.md" + }, + { + "source": "docs/evidence/verification.md", + "target": "../HANDOFF.md" + }, + { + "source": "docs/evidence/fw00-verification-index-20261013/README.md", + "target": "../releases/2026-10-13-member-gates/README.md" + }, + { + "source": "docs/evidence/fw00-verification-index-20261013/README.md", + "target": "../member-gates-20261013/README.md" + }, + { + "source": "docs/evidence/fw00-verification-index-20261013/README.md", + "target": "focused.json" + }, + { + "source": "docs/evidence/fw00-verification-index-20261013/README.md", + "target": "hub-reader.json" + }, + { + "source": "docs/evidence/fw00-verification-index-20261013/README.md", + "target": "owner-gates.json" + }, + { + "source": "docs/evidence/fw00-verification-index-20261013/README.md", + "target": "owner-gate-logs.json.gz" + } + ], + "checker_note": "An initial successor-check script used nonexistent payload size key and raised KeyError before producing a verdict; actual owner receipt field bytes is used in this successful replay." +} diff --git a/docs/evidence/verification.md b/docs/evidence/verification.md new file mode 100644 index 0000000..871e81b --- /dev/null +++ b/docs/evidence/verification.md @@ -0,0 +1,22 @@ +# Verification evidence — telegram-dev + +## v0.2.4 — published-source evidence index (2026-10-13) + +This index makes existing owner evidence discoverable. It does not re-run or +re-stamp historical checks. The version identifies the artifact in the linked +publication receipt; the repository also contains documented, payload-preserving +successors. A matching family-ledger heading is not a new acceptance result. + +| Evidence needed | Owning source | Scope and limits | +|---|---|---| +| Release and publication | [Release packet](releases/2026-10-13-member-gates/README.md#published-readback) and [machine readback](releases/2026-10-13-member-gates/published-readback.json) | Exact original tag/source, release run, registry integrity and packaged-file hashes. Preserve the receipt's date and source. | +| Board and release safeguards | [Implementation and witnessed controls](member-gates-20261013/README.md) | Bounded source/process validation, including its intermediate failures; not a general YAML/Bash proof. | +| Repository-only successor | [Shared-header correction](member-gates-headers-20261013.md) and [owner board](backlog.md) | Declared source/payload preservation and publication reconciliation; no new package release. | +| This index change | [FW00 packet](fw00-verification-index-20261013/README.md) | Link/version discovery and unchanged package evidence only; current checks are recorded separately from historical receipts. | + +Installed host discovery, native hooks, model task quality and live provider/device +behavior are **not established by this index**. Read their own source-bound receipts +if needed; package equality does not imply them. Older runs keep their original +confirmation state. No human confirmation or completed pipeline run is invented. + +[Current handoff](../HANDOFF.md) names the next task.