diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md new file mode 100644 index 0000000..68bd66c --- /dev/null +++ b/docs/HANDOFF.md @@ -0,0 +1,16 @@ +# web3d-dev: evidence navigation handoff + +The [verification index](evidence/verification.md) routes to existing evidence for +published version 0.1.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..c067b12 --- /dev/null +++ b/docs/evidence/fw00-verification-index-20261013/README.md @@ -0,0 +1,105 @@ +# 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 +[ef6bc1acff0f1ee0258e66cc74828ebe14c170e2](https://github.com/ssheleg/web3d-dev/commit/ef6bc1acff0f1ee0258e66cc74828ebe14c170e2), +manifest version 0.1.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 20 +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 structural output is retained verbatim; no native/device/model +result follows from this command. + +[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 +`c8047908c00cdcac4912d6e5b6a3d58ff33f8d4e` 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. +- `node test/installer_test.js`: exit 0. +- `bash -n install.sh`: exit 0. +- `claude plugin validate . --strict`: exit 0. +- `claude plugin validate plugins/web3d-dev --strict`: exit 0. +- `python3 test/evals_validate.py`: 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..1ceafbb --- /dev/null +++ b/docs/evidence/fw00-verification-index-20261013/focused.json @@ -0,0 +1,80 @@ +{ + "source_base": "ef6bc1acff0f1ee0258e66cc74828ebe14c170e2", + "package_version": "0.1.4", + "published_receipt": "docs/evidence/releases/2026-10-13-member-gates/published-readback.json", + "payload_files_checked": 20, + "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": "OK \u2014 15 checks, 3 skills, 10 references\n", + "stderr": "" + }, + "broad_owner_gates": "QUEUED_AFTER_TP_FULL", + "native_provider_model": "NOT_RUN", + "indexed_document_sha256": { + "docs/evidence/verification.md": "7d73aaab01d4beafd904ae30dac06b0d0f5cb57f8d979476e06e58c77791bcda", + "docs/HANDOFF.md": "0b5a38c9b8eaa0b32cfcf8e56c35c97a2d057f70ace104902aa1064b229769a1", + "docs/evidence/fw00-verification-index-20261013/README.md": "f6ddf155419eb9467c518c5a95e68ee3ecd5fa3ecf0b237b6d848c3f7c4cbc92" + } +} 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..3e21302 --- /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.1.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..8baccb2 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..c6ff0dd --- /dev/null +++ b/docs/evidence/fw00-verification-index-20261013/owner-gates.json @@ -0,0 +1,183 @@ +{ + "schema": 1, + "source": "c8047908c00cdcac4912d6e5b6a3d58ff33f8d4e", + "commands": [ + { + "argv": [ + "npm", + "test" + ], + "started_utc": "2026-10-13T11:36:35.578938+00:00", + "log": "/tmp/fw00-web3d-dev-gate-0.log", + "owned_scratch": "/tmp/fresh-fw00-web3d-dev-ad67d93899e54d5e8791672e98fe9c6f", + "admitted_free_bytes": 618004480, + "owned_pid": 16493, + "exit_code": 0, + "disk_stopped": false, + "timed_out": false, + "minimum_free_bytes": 618000384, + "elapsed_seconds": 1.007, + "log_sha256": "41ae566dbe22db4a431e601e9558832602597039439332546f18471c0e97f9aa", + "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": 308772 + } + }, + { + "argv": [ + "npm", + "run", + "test:negatives" + ], + "started_utc": "2026-10-13T11:36:36.612030+00:00", + "log": "/tmp/fw00-web3d-dev-gate-1.log", + "owned_scratch": "/tmp/fresh-fw00-web3d-dev-c826135280604cc3b90f948efb9146c7", + "admitted_free_bytes": 618278912, + "owned_pid": 16613, + "exit_code": 0, + "disk_stopped": false, + "timed_out": false, + "minimum_free_bytes": 615743488, + "elapsed_seconds": 6.039, + "log_sha256": "bd29e808ecf43f03d2f5edeadb7f4ac6da29cf6cfb028fc8809c090ee32320ea", + "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": 305548 + } + }, + { + "argv": [ + "node", + "test/installer_test.js" + ], + "started_utc": "2026-10-13T11:36:42.679837+00:00", + "log": "/tmp/fw00-web3d-dev-gate-2.log", + "owned_scratch": "/tmp/fresh-fw00-web3d-dev-dc9bef48099540f599cf33e1fb20045a", + "admitted_free_bytes": 614596608, + "owned_pid": 17437, + "exit_code": 0, + "disk_stopped": false, + "timed_out": false, + "minimum_free_bytes": 614584320, + "elapsed_seconds": 1.008, + "log_sha256": "23b540f309afe29a13484f11f1fe269ae71a744bfe62a0088d9559007cad480a", + "source_unchanged": true, + "worktree_clean": true, + "scratch_entries": [], + "scratch_removed": true + }, + { + "argv": [ + "bash", + "-n", + "install.sh" + ], + "started_utc": "2026-10-13T11:36:43.719410+00:00", + "log": "/tmp/fw00-web3d-dev-gate-3.log", + "owned_scratch": "/tmp/fresh-fw00-web3d-dev-d4a9a1ed28134599b72e039c53cf9828", + "admitted_free_bytes": 612405248, + "owned_pid": 17793, + "exit_code": 0, + "disk_stopped": false, + "timed_out": false, + "minimum_free_bytes": 612392960, + "elapsed_seconds": 1.01, + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "source_unchanged": true, + "worktree_clean": true, + "scratch_entries": [], + "scratch_removed": true + }, + { + "argv": [ + "claude", + "plugin", + "validate", + ".", + "--strict" + ], + "started_utc": "2026-10-13T11:36:44.753929+00:00", + "log": "/tmp/fw00-web3d-dev-gate-4.log", + "owned_scratch": "/tmp/fresh-fw00-web3d-dev-4ad3bc5b25b74c39825d052a6d33191e", + "admitted_free_bytes": 611303424, + "owned_pid": 18021, + "exit_code": 0, + "disk_stopped": false, + "timed_out": false, + "minimum_free_bytes": 611287040, + "elapsed_seconds": 1.011, + "log_sha256": "5c8981af049df3cbbddae41fda7ff1f4acf13b4f02aec27c217ada1c5ddf4606", + "source_unchanged": true, + "worktree_clean": true, + "scratch_entries": [], + "scratch_removed": true + }, + { + "argv": [ + "claude", + "plugin", + "validate", + "plugins/web3d-dev", + "--strict" + ], + "started_utc": "2026-10-13T11:36:45.793216+00:00", + "log": "/tmp/fw00-web3d-dev-gate-5.log", + "owned_scratch": "/tmp/fresh-fw00-web3d-dev-9b53aecece10493090a43b000be19188", + "admitted_free_bytes": 610877440, + "owned_pid": 18266, + "exit_code": 0, + "disk_stopped": false, + "timed_out": false, + "minimum_free_bytes": 610865152, + "elapsed_seconds": 1.007, + "log_sha256": "421da3ad30bfabd3a47e0efc7855bc42654fcdcfc7bf6c32029af811fb32536f", + "source_unchanged": true, + "worktree_clean": true, + "scratch_entries": [], + "scratch_removed": true + }, + { + "source": "c8047908c00cdcac4912d6e5b6a3d58ff33f8d4e", + "owner": "web3d-dev-verification-index", + "argv": [ + "python3", + "test/evals_validate.py" + ], + "log": "/tmp/fw00-web3d-dev-verification-index-final.log", + "owned_scratch": "/tmp/fresh-fw00-final-f520a62d85be436a8ac65d45b03fda51", + "started_utc": "2026-10-13T11:38:06.109207+00:00", + "admitted_free_bytes": 618512384, + "exit_code": 0, + "disk_or_time_stopped": false, + "minimum_free_bytes": 618491904, + "elapsed_seconds": 1.012, + "log_sha256": "ad806a1a4ec18580fc2664be3149b5787247eb92e26a0fff9b9d3def9450a249", + "source_unchanged": true, + "worktree_clean": true, + "scratch_entries": [], + "scratch_removed": true + } + ], + "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..6b0f481 --- /dev/null +++ b/docs/evidence/fw00-verification-index-20261013/successor-checks.json @@ -0,0 +1,99 @@ +{ + "gated_source": "c8047908c00cdcac4912d6e5b6a3d58ff33f8d4e", + "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": "OK \u2014 15 checks, 3 skills, 10 references\n", + "stderr": "" + }, + "diff": { + "argv": [ + "git", + "diff", + "--check" + ], + "exit_code": 0, + "stdout": "", + "stderr": "" + } + }, + "published_payload_files_equal": 20, + "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..8f8b32a --- /dev/null +++ b/docs/evidence/verification.md @@ -0,0 +1,22 @@ +# Verification evidence — web3d-dev + +## v0.1.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.