diff --git a/.gitattributes b/.gitattributes index 54bb570d..7b7817c2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -25,3 +25,5 @@ docs/skills-3080-tencent-MIT.txt -text /docs/skills-3080-rss-fixture.go.txt text eol=lf /docs/skills-3080-rss-xml-chars.go.txt text eol=lf /docs/skills-3080-season-blend-model.go.txt text eol=lf +/docs/skills-3080-sixmile-next20-evaluation.json text eol=lf +/docs/skills-3080-body-alias-scan.json text eol=lf diff --git a/docs/skills-3080-adoptions.json b/docs/skills-3080-adoptions.json index e1237176..c2225045 100644 --- a/docs/skills-3080-adoptions.json +++ b/docs/skills-3080-adoptions.json @@ -485,13 +485,21 @@ "existing_body_comparison_complete": false, "third_party_support_or_service_rights_accepted": false, "public_delta_acceptance": { - "head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", - "review_todos": [ - 3590, - 3599 - ], + "accepted_head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", "merge": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", - "pr": 428 + "original_review": { + "todo": 3590, + "head": "ebb023f2b04f4551037fd5bf746819466e96a4b4", + "base": "6905b890d7b280c659e2073c6b561c903c1ed955", + "must": 1 + }, + "pr": 428, + "correction_review": { + "todo": 3599, + "head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", + "base": "ebb023f2b04f4551037fd5bf746819466e96a4b4", + "must": 0 + } } }, { @@ -515,13 +523,21 @@ "existing_body_comparison_complete": false, "third_party_support_or_service_rights_accepted": false, "public_delta_acceptance": { - "head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", - "review_todos": [ - 3590, - 3599 - ], + "accepted_head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", "merge": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", - "pr": 428 + "original_review": { + "todo": 3590, + "head": "ebb023f2b04f4551037fd5bf746819466e96a4b4", + "base": "6905b890d7b280c659e2073c6b561c903c1ed955", + "must": 1 + }, + "pr": 428, + "correction_review": { + "todo": 3599, + "head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", + "base": "ebb023f2b04f4551037fd5bf746819466e96a4b4", + "must": 0 + } } }, { @@ -538,12 +554,29 @@ "upstream_original_preserved": true, "source_notice_preserved": true, "independent_review_pending": false, - "public_delta_review_pending": true, + "public_delta_review_pending": false, "explicit_use_check_pending": false, "explicit_use_assessment": "3584 RSS A/B/C plus owned literal Go XML serialize/parse and invalid-character tests; actual placement/discovery confirmed; no real website or hosted feed proof.", "evidence": "skills-3080-rss-season-installation-evidence.json", "existing_body_comparison_complete": false, - "third_party_support_or_service_rights_accepted": false + "third_party_support_or_service_rights_accepted": false, + "public_delta_acceptance": { + "accepted_head": "00c87391a57467ab3373316229d5ef33e8b8f361", + "merge": "36722b7b45f227b662843bb515b0e7aff766dba5", + "original_review": { + "todo": 3602, + "head": "50ab02f3420dbe0c34458708dd82adf482c0f763", + "base": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", + "must": 0 + }, + "pr": 430, + "correction_review": { + "todo": 3605, + "head": "00c87391a57467ab3373316229d5ef33e8b8f361", + "base": "50ab02f3420dbe0c34458708dd82adf482c0f763", + "must": 0 + } + } }, { "inventory_id": "github:29a0ba0843498fe31de765752ffa07dfd7835d47f3ac062d641e41169e601167", @@ -559,12 +592,29 @@ "upstream_original_preserved": true, "source_notice_preserved": true, "independent_review_pending": false, - "public_delta_review_pending": true, + "public_delta_review_pending": false, "explicit_use_check_pending": false, "explicit_use_assessment": "3591 season A/B/C plus owned interrupted four-state numerical model tests; actual placement/discovery confirmed; no renderer/shader/performance proof.", "evidence": "skills-3080-rss-season-installation-evidence.json", "existing_body_comparison_complete": false, - "third_party_support_or_service_rights_accepted": false + "third_party_support_or_service_rights_accepted": false, + "public_delta_acceptance": { + "accepted_head": "00c87391a57467ab3373316229d5ef33e8b8f361", + "merge": "36722b7b45f227b662843bb515b0e7aff766dba5", + "original_review": { + "todo": 3602, + "head": "50ab02f3420dbe0c34458708dd82adf482c0f763", + "base": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", + "must": 0 + }, + "pr": 430, + "correction_review": { + "todo": 3605, + "head": "00c87391a57467ab3373316229d5ef33e8b8f361", + "base": "50ab02f3420dbe0c34458708dd82adf482c0f763", + "must": 0 + } + } } ], "excluded_entries": [ diff --git a/docs/skills-3080-body-alias-scan.json b/docs/skills-3080-body-alias-scan.json new file mode 100644 index 00000000..07d751a8 --- /dev/null +++ b/docs/skills-3080-body-alias-scan.json @@ -0,0 +1,413 @@ +{ + "todo": 3080, + "catalog_sha256": "2d73c9a038a41cc220a9687b935bfa1e0b315b65d9bd6d3e54ddb4111972876c", + "catalog_occurrences": 73220, + "available_body_occurrences": 72145, + "unique_raw_bodies": 66740, + "valid_normalized_raw_bodies": 66713, + "non_utf8_raw_bodies": 27, + "valid_normalized_occurrences": 72118, + "non_utf8_occurrences": 27, + "unavailable_or_held_occurrences": 1075, + "remaining_unmapped_occurrences": 0, + "all_available_occurrences_mapped": true, + "all_available_bodies_normalized": false, + "canonical_source_head": "00c87391a57467ab3373316229d5ef33e8b8f361", + "canonical_ledger_sha256": "4b001139318f7c1bc365737a2c0e48424770fb927d7a429bfcf35c84d4277405", + "canonical_adopted_or_integrated": 35, + "cache_files": [ + { + "name": "catalog-body-digest-cache123649.jsonl", + "sha256": "2f42ed5598c61103dc245f48c7ad38e61006264c8ce0c6f79a532cd0ffa066f5", + "bytes": 11523029, + "records": 28870 + }, + { + "name": "catalog-body-segment2-cache123649.jsonl", + "sha256": "6a74e50d4b7efb49c3ea085b03d79005638aab48f18e73863a46094df2a72c7c", + "bytes": 8584912, + "records": 20012 + }, + { + "name": "catalog-body-segment3-cache123649.jsonl", + "sha256": "9cfe970f019294197383953d7ca154f0de897e0bbea9bb549f5896b0284ab367", + "bytes": 7662902, + "records": 17858 + } + ], + "failure_categories": { + "non_utf8_body_pending": 27 + }, + "failed_rows": [ + { + "inventory_id": "github:bd196bb476f7583f9f70590e095761f1f370ef2d8b99f5d14bde08e8ac80b232", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:cc8a5fee41ef5610104c7145ca50bbb3b8aa795771c3875d423daf79d9bd2b82", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:293ece5a8e5d56ffa6436df5b560237539589e4b3407f49eb15a93db92c13974", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:e9e2f12976e836e0d6b0327b1d23acbddcfab2b3276505390375dc68955730be", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:b778cb8228ce4736cf4e85eeaf0d955ea42852d268830241164e303894174903", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:ffebf892f6455f21a8c7e4817531f28daf8026cc41bef43298564176e4b46ac7", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:46be0aa3878182172b360bddcb526015981079563e6832d984f7db0cbfe95d4d", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:3cbfa8a5804192bf16618778a3e98f19c41d5d9ed87f48e3abdb0a8de35a0857", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:853adecb00ff7842484abf8e73a337b7d6ec7147fbec9170f2a2e91e9f8bfbdf", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:6b8980b902962f375e5e14ac84d6719a62dc01621467e90c1b2c53f3bdf51a0e", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:08c0a08dbd27ad3ff1fabf105a82b08eb13c0c423dd8f8c8385a375cd45f753a", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:414b0a821606b9ec1dacc9ade90d176a3f41e009d6cb7d697e9d2f40a44b5a1a", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:21dbaed7cf3cab6ead6b1d6aaf45aad6a6fc6fd3372ddb8aa228782e460b8f74", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:8db47b3c93dbebc4bf2eb702311e33f1f0cbc73b337aab1f7c7a17262ff0d336", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:1686964bab1f18cb959aafa7b7e7a08915d9ec01b8833e0c3c8bcde5027569ab", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:c5709160cd6a648fff294e5878739df5014996eb5daa4b720f14905483c5fabb", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:844de14c50ea2d10951b3e536c78c6e989750b5dd7d706f71b9966f21e069b3f", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:5916e37d883cb561cd563363d2a12d9ef22dc734a28462e080d499e820920f42", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:bb83a91700fa11d1d9ded6a3413c374fe7cd7e5db9618ac29366ce22c4cd77fc", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:686f8d1d4f049d66787a99d907c059b700d0613de5465f1780662c5f6a43e797", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:c00a2c9907bb41c53d634e8518ff3c3a2ba6a3c68ef6f956e364fbc377768419", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:5cbf50a4f5f0af31f5b3bfd331111d2fbdd2a200bc23fa2758b8eccc3f0a5f41", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:ba153680a85ae1bbde5f6ed49a43f3cb362bd72cca0c50a96ab3f2d96d613203", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:dc0baee421719c7f90a87953f760c30f245889bcf9e4c156580219b214524b60", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:9c8605a3e488493bf67ed5690b3f33df8746781d31975e8f7058cb1def36b58c", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "github:595707b13eb5f2edfbf6c31a7736f9644bb464703b2016d67f0e92b6d8c5085a", + "reason": "non_utf8_body_pending" + }, + { + "inventory_id": "supplement:aa958a3e87f3ee6360d625680285a86bc79b364c3594bcde3222d1736d1a4df0", + "reason": "non_utf8_body_pending" + } + ], + "pending_alias_leads": 8, + "matches": [ + { + "body": { + "raw_sha256": "7b326b4a2f0f5f85122144628ec02077e48841e0e0e82efce88b3415bcfb7c26", + "raw_bytes": 3651, + "normalized_body_sha256": "71839b20716b65aade278a3f7845aba2a0b1688304ea4bd94187045cfc183f0d", + "normalized_body_bytes": 3294, + "removed_metadata_header_sha256": "b98c6f6bf608e33fdd2f5f2b97566d856bd971fd028e4c882d53e8fd41c06922", + "removed_metadata_header_bytes": 355, + "known_skill_metadata_header_removed": true, + "raw_integrity_verified": true + }, + "canonical_adoptions": [ + { + "inventory_id": "github:b42ae7debd7346ed232f75cdb212f9d8a9cb05bd347c93c8b7de82e8d5433fc8", + "target": "github-actions-ci" + } + ], + "commit": "49f948faa9258a0c61caceaf225e179651397431", + "effective_source_method": "", + "final_disposition_applied": false, + "header_and_support_comparison_pending": true, + "individual_rights_not_accepted": true, + "inventory_id": "github:471d53b2b5f0b28cfe5fe2356ebb4b6b0785fe09cdd7fac023231665d668a37a", + "inventory_unit": "github_skill_entry", + "kind": "skill_entry", + "listing_url": "https://github.com/openai/skills/blob/49f948faa9258a0c61caceaf225e179651397431/skills/.curated/gh-fix-ci/SKILL.md", + "path": "skills/.curated/gh-fix-ci/SKILL.md", + "raw_sha_matches_a_canonical": false, + "repo": "openai/skills", + "source_url": "https://github.com/openai/skills/blob/49f948faa9258a0c61caceaf225e179651397431/skills/.curated/gh-fix-ci/SKILL.md" + }, + { + "body": { + "raw_sha256": "2fa48863482975454f82db41137a1d60e5b367a76593bdb403f724107e202b44", + "raw_bytes": 1043, + "normalized_body_sha256": "6d00875461cdc9d9b20c06f09b7c12f0ed02f1717243fa51c7edec4896bfb561", + "normalized_body_bytes": 736, + "removed_metadata_header_sha256": "273e5aac59e2080d9da83089677b9143b9f9af871095c643184e785527ae903c", + "removed_metadata_header_bytes": 306, + "known_skill_metadata_header_removed": true, + "raw_integrity_verified": true + }, + "canonical_adoptions": [ + { + "inventory_id": "github:a3e5cb3352130bff6eb6d6320eea2ac71359fdb1cc36b580f6b882f4208924ec", + "target": "defuddle" + } + ], + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "effective_source_method": "", + "final_disposition_applied": false, + "header_and_support_comparison_pending": true, + "individual_rights_not_accepted": true, + "inventory_id": "github:7f51d6a3826023c4744fe7d176acba37f58e6ab8bea26741a02413709a036f3a", + "inventory_unit": "github_skill_entry", + "kind": "skill_entry", + "listing_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/sadlay/defuddle-obsidian/SKILL.md", + "path": "skills/sadlay/defuddle-obsidian/SKILL.md", + "raw_sha_matches_a_canonical": false, + "repo": "6mile/skills", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/sadlay/defuddle-obsidian/SKILL.md" + }, + { + "body": { + "raw_sha256": "0f4592dcb53cf2b5d6b7febee6b4152018b565551a1c29e3c612f57b218ab295", + "raw_bytes": 9092, + "normalized_body_sha256": "6eaabfcf59c08178e7c6a7ac2ec217db2eaeda157962f8f32b7a18ea3ef3d4d9", + "normalized_body_bytes": 8735, + "removed_metadata_header_sha256": "710b053b4e4463f5c07ade806c4259376d3222515c826f32183089b38053e1af", + "removed_metadata_header_bytes": 356, + "known_skill_metadata_header_removed": true, + "raw_integrity_verified": true + }, + "canonical_adoptions": [ + { + "inventory_id": "github:e4ade76a7932447efe3dd6e777ab300a5a9a6f1cf13a392614b31c621906a016", + "target": "mcp-builder" + } + ], + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "effective_source_method": "", + "final_disposition_applied": false, + "header_and_support_comparison_pending": true, + "individual_rights_not_accepted": true, + "inventory_id": "github:9a4792733ddd9ccbd3883f80adaa44d2f3214af2c971850d106896cf0238c55f", + "inventory_unit": "github_skill_entry", + "kind": "skill_entry", + "listing_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/uniquevme/unique-mcp-builder-test/SKILL.md", + "path": "skills/uniquevme/unique-mcp-builder-test/SKILL.md", + "raw_sha_matches_a_canonical": true, + "repo": "6mile/skills", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/uniquevme/unique-mcp-builder-test/SKILL.md" + }, + { + "body": { + "raw_sha256": "57231330040e18e033dad8b2fdc0340a6185034c32b42b7d3448f444a6af6cf2", + "raw_bytes": 9328, + "normalized_body_sha256": "6eaabfcf59c08178e7c6a7ac2ec217db2eaeda157962f8f32b7a18ea3ef3d4d9", + "normalized_body_bytes": 8735, + "removed_metadata_header_sha256": "710b053b4e4463f5c07ade806c4259376d3222515c826f32183089b38053e1af", + "removed_metadata_header_bytes": 356, + "known_skill_metadata_header_removed": true, + "raw_integrity_verified": true + }, + "canonical_adoptions": [ + { + "inventory_id": "github:e4ade76a7932447efe3dd6e777ab300a5a9a6f1cf13a392614b31c621906a016", + "target": "mcp-builder" + } + ], + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "effective_source_method": "", + "final_disposition_applied": false, + "header_and_support_comparison_pending": true, + "individual_rights_not_accepted": true, + "inventory_id": "github:c619834fa98a6aa7f3e0fd750f679c28c3889e0e77c9fba499ef12dab832fe44", + "inventory_unit": "github_skill_entry", + "kind": "skill_entry", + "listing_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/jarrett817/test-11/SKILL.md", + "path": "skills/jarrett817/test-11/SKILL.md", + "raw_sha_matches_a_canonical": false, + "repo": "6mile/skills", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/jarrett817/test-11/SKILL.md" + }, + { + "body": { + "raw_sha256": "0f4592dcb53cf2b5d6b7febee6b4152018b565551a1c29e3c612f57b218ab295", + "raw_bytes": 9092, + "normalized_body_sha256": "6eaabfcf59c08178e7c6a7ac2ec217db2eaeda157962f8f32b7a18ea3ef3d4d9", + "normalized_body_bytes": 8735, + "removed_metadata_header_sha256": "710b053b4e4463f5c07ade806c4259376d3222515c826f32183089b38053e1af", + "removed_metadata_header_bytes": 356, + "known_skill_metadata_header_removed": true, + "raw_integrity_verified": true + }, + "canonical_adoptions": [ + { + "inventory_id": "github:e4ade76a7932447efe3dd6e777ab300a5a9a6f1cf13a392614b31c621906a016", + "target": "mcp-builder" + } + ], + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "effective_source_method": "", + "final_disposition_applied": false, + "header_and_support_comparison_pending": true, + "individual_rights_not_accepted": true, + "inventory_id": "github:e2d31692e49225ac37aa9b2eac4d04b4db6ed6da177cdea2c1d53c45b7516e32", + "inventory_unit": "github_skill_entry", + "kind": "skill_entry", + "listing_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/pupuking723/mcp-builder-anthropic/SKILL.md", + "path": "skills/pupuking723/mcp-builder-anthropic/SKILL.md", + "raw_sha_matches_a_canonical": true, + "repo": "6mile/skills", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/pupuking723/mcp-builder-anthropic/SKILL.md" + }, + { + "body": { + "raw_sha256": "cb702b754dd340ad7c7db4f34e1953277eb64601201ce96515b00786a1088a26", + "raw_bytes": 1034, + "normalized_body_sha256": "6d00875461cdc9d9b20c06f09b7c12f0ed02f1717243fa51c7edec4896bfb561", + "normalized_body_bytes": 736, + "removed_metadata_header_sha256": "4a1f574d2b2e95f0d0366e6708b09ca46c0a5823968fd7e9ae4385e15bddaf1e", + "removed_metadata_header_bytes": 297, + "known_skill_metadata_header_removed": true, + "raw_integrity_verified": true + }, + "canonical_adoptions": [ + { + "inventory_id": "github:a3e5cb3352130bff6eb6d6320eea2ac71359fdb1cc36b580f6b882f4208924ec", + "target": "defuddle" + } + ], + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "effective_source_method": "", + "final_disposition_applied": false, + "header_and_support_comparison_pending": true, + "individual_rights_not_accepted": true, + "inventory_id": "github:e7da9a8f579234773e94a21103ea6f2e4e2e91d7c75aa71d14b389c01d1bcaaf", + "inventory_unit": "github_skill_entry", + "kind": "skill_entry", + "listing_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/hoyaryyj/kepano-defuddle/SKILL.md", + "path": "skills/hoyaryyj/kepano-defuddle/SKILL.md", + "raw_sha_matches_a_canonical": false, + "repo": "6mile/skills", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/hoyaryyj/kepano-defuddle/SKILL.md" + }, + { + "body": { + "raw_sha256": "10673a4dc70a0a057612d443243ab7a5aa4abdd4a0fadc3f6eec5fd71ad5a971", + "raw_bytes": 1123, + "normalized_body_sha256": "6d00875461cdc9d9b20c06f09b7c12f0ed02f1717243fa51c7edec4896bfb561", + "normalized_body_bytes": 736, + "removed_metadata_header_sha256": "dc2be51922bdecf8db2e738cf3810d1617b809cbcd287bb4d5410c933523e818", + "removed_metadata_header_bytes": 386, + "known_skill_metadata_header_removed": true, + "raw_integrity_verified": true + }, + "canonical_adoptions": [ + { + "inventory_id": "github:a3e5cb3352130bff6eb6d6320eea2ac71359fdb1cc36b580f6b882f4208924ec", + "target": "defuddle" + } + ], + "commit": "240a65fc58027ecf4f84c828faa8e64156a68407", + "effective_source_method": "listed_source", + "final_disposition_applied": false, + "header_and_support_comparison_pending": true, + "individual_rights_not_accepted": true, + "inventory_id": "site:defuddle", + "inventory_unit": "site_index_entry", + "kind": "", + "listing_url": "https://agent-skills.jp/skill/defuddle", + "path": "claude-skills/defuddle/SKILL.md", + "raw_sha_matches_a_canonical": false, + "repo": "Nero-kk/claude-agent-skills", + "source_url": "https://agent-skills.jp/skill/defuddle" + }, + { + "body": { + "raw_sha256": "0f4592dcb53cf2b5d6b7febee6b4152018b565551a1c29e3c612f57b218ab295", + "raw_bytes": 9092, + "normalized_body_sha256": "6eaabfcf59c08178e7c6a7ac2ec217db2eaeda157962f8f32b7a18ea3ef3d4d9", + "normalized_body_bytes": 8735, + "removed_metadata_header_sha256": "710b053b4e4463f5c07ade806c4259376d3222515c826f32183089b38053e1af", + "removed_metadata_header_bytes": 356, + "known_skill_metadata_header_removed": true, + "raw_integrity_verified": true + }, + "canonical_adoptions": [ + { + "inventory_id": "github:e4ade76a7932447efe3dd6e777ab300a5a9a6f1cf13a392614b31c621906a016", + "target": "mcp-builder" + } + ], + "commit": "dbd4588f9e1033efb41dad4bef2f7947c8993d44", + "effective_source_method": "listed_source", + "final_disposition_applied": false, + "header_and_support_comparison_pending": true, + "individual_rights_not_accepted": true, + "inventory_id": "site:mcp-builder-6a45e1", + "inventory_unit": "site_index_entry", + "kind": "", + "listing_url": "https://agent-skills.jp/skill/mcp-builder-6a45e1", + "path": "skills/mcp-builder/SKILL.md", + "raw_sha_matches_a_canonical": true, + "repo": "anthropics/skills", + "source_url": "https://agent-skills.jp/skill/mcp-builder-6a45e1" + } + ], + "normalization": "CRLF to LF; remove only a complete leading YAML block containing name/description keys; trim outer body whitespace; append LF. This is an intentionally narrow procedure-body comparison, not whole-file/package equality.", + "method": "One interrupted180s run retained complete28870cache records. Two bounded segments reused those records, recorded prior UTF8 failures without re-reading them, and read fresh20000 then17858 unique raw bodies. Both top-level direct and nested site effective-attempt schemas are included; known0-byte bodies differ from unknownbytes.", + "definition": "Machine triage only. Mapped occurrences may reuse an exact cached digest; this is not a fresh physical read of every alias file. No semantic full-read count, copying grant, real safety result or final duplicate disposition is established. Header/support differences and per-occurrence source/rights still need comparison.", + "semantic_primary_read_delta": 0, + "final_disposition_delta": 0, + "central_read_write": 0, + "source_code_executed": false, + "external_fetches": 0, + "held647_fetches": 0, + "completed_at": "2026-10-24T08:05:48.594192Z", + "raw_source_bodies_in_this_public_artifact": 0 +} diff --git a/docs/skills-3080-mengto-partial-evaluation.json b/docs/skills-3080-mengto-partial-evaluation.json index 1ea4faa2..d48bc5a0 100644 --- a/docs/skills-3080-mengto-partial-evaluation.json +++ b/docs/skills-3080-mengto-partial-evaluation.json @@ -231,14 +231,31 @@ "content_review_todo": 3591, "bundle_sha256": "97e3d3b442e14a093f75bdeecd81e55d0ba17f13428f53f3806c8bc85a998bfb", "new_model_turn_tested": false, - "public_delta_review_pending": true, + "public_delta_review_pending": false, "fresh_metadata_enabled": true, "old_held_comparison_released": false, "actual_file_structure_hash_passed": true, "target": "3d-four-seasons", "real_site_or_renderer_executed": false, "evidence": "skills-3080-rss-season-installation-evidence.json", - "content_review_must": 0 + "content_review_must": 0, + "public_delta_acceptance": { + "accepted_head": "00c87391a57467ab3373316229d5ef33e8b8f361", + "merge": "36722b7b45f227b662843bb515b0e7aff766dba5", + "original_review": { + "todo": 3602, + "head": "50ab02f3420dbe0c34458708dd82adf482c0f763", + "base": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", + "must": 0 + }, + "pr": 430, + "correction_review": { + "todo": 3605, + "head": "00c87391a57467ab3373316229d5ef33e8b8f361", + "base": "50ab02f3420dbe0c34458708dd82adf482c0f763", + "must": 0 + } + } } }, { @@ -18176,13 +18193,21 @@ ], "evidence": "skills-3080-mcp-pointer-installation-evidence.json", "public_delta_acceptance": { - "head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", - "review_todos": [ - 3590, - 3599 - ], + "accepted_head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", "merge": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", - "pr": 428 + "original_review": { + "todo": 3590, + "head": "ebb023f2b04f4551037fd5bf746819466e96a4b4", + "base": "6905b890d7b280c659e2073c6b561c903c1ed955", + "must": 1 + }, + "pr": 428, + "correction_review": { + "todo": 3599, + "head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", + "base": "ebb023f2b04f4551037fd5bf746819466e96a4b4", + "must": 0 + } } } }, @@ -22129,7 +22154,7 @@ "support": 349, "central_writes": 0 }, - "amended_at": "2026-10-24T07:16:19.7577795+00:00", + "amended_at": "2026-10-24T08:15:09.0197014+00:00", "amendment_job": "20261024-123649-todo-3080", "amendment_definition": "Document amendment time; individual source retrieval and reading times remain in their own receipts." } diff --git a/docs/skills-3080-next20-acceptance.md b/docs/skills-3080-next20-acceptance.md new file mode 100644 index 00000000..e5008f3f --- /dev/null +++ b/docs/skills-3080-next20-acceptance.md @@ -0,0 +1,11 @@ +# 追加20候補の評価と保存本文の機械照合 + +[新20候補](skills-3080-sixmile-next20-evaluation.json)の評価を、[6mile索引](skills-3080-sixmile-evaluation-index.json)と[全体進行記録](skills-3080-progress.json)へ反映した。本文のraw全読20、個別notice20、支持178中raw全読74・走査23・未保存81を区別する。走査1件の伏字は全読へ昇格しない。本人aの広い導入方針を保持し、子の「候補2件」を上限にしない。各用途の価値と不足、個別権利と未保存範囲、正負例、固定出典と親の採否前の補正を残す。 + +研究3601の原応答74410B/SHAe17250f2455014662e6c91ad9f00a365ff5cd59711b70b1193104d8fac748dd4を保存し、全20評価の意味・権利・例・限界を親が読んだ。job/nativeのSonnet5.5/maxを照合。本文20の160018Bと個別notice20、保存117source-path(gzip実体114)を完全tree/index/catalog/gzip/strictUTF8/Gitblobに照合し、原報告と突き合わせた。親が新20の原本文をすべて再読した主張でも、反復tupleを意味読了した主張でもない。3指紋を公開前の独立原本照合と受領記録から固定し、全読/走査の担当、伏字、unknownbytes、原ソース実行falseを検証する。 + +旧21+45+新20はsource内で86候補、raw84/workflow85/許諾文のみ1。sourceのraw未完55539と未評価55537は別。全体raw474/workflow475は別資料137+76+177を加えたpath集計で、同一内容の別pathや差分再利用の方法を保持する。支持765は保存418/raw242/伏字付き手順23/走査113/保存未読40/未保存347。全体の[採用台帳](skills-3080-adoptions.json)は新規32/統合3/除外8のまま。この受領評価だけでコピー許諾・新規採用・中央操作を増やしていない。 + +[保存本文の照合](skills-3080-body-alias-scan.json)は、73220候補のうち保存本文72145候補を対応付けた機械処理である。正規化可能72118とUTF8未解決27を分け、本文前のmetadataを取り除く狭い同一性から8件の比較候補を得た。これは全文の意味読取、個別許諾、ヘルパーや素材の同一性、安全性、最終重複除外の証明ではない。最初の180秒終了は記録を保持し、完了した指紋を再利用して残りを2区分で処理した。サイトのnested本文、既知0byteと未取得を区別し、未取得428と取得保持647を読まない。全16資料の実導入は未完。 + +PR430は3602/3605の固定範囲Must0とexact00cの全CI終了後に通常merge/読戻し/mainff済み。その補足として、全体向け参照は空配列にし、利用が無いことを除外や新しい権利質問へ変えない原制約を明記した。旧レビューのhead/Mustと修正確認を分け、出典namespaceの整合も確認する。今回の差分は別のtest/review/CI/mergeで受け入れ、古い成功結果を流用しない。元3048/バックアップ/junction、旧4件の比較保留と新1件の候補保留(計5件、観測時点を区別)・記事・647取得拒否を保持する。本文読書きや例外/Gitbootstrap/設定変更による回避は行っていない。本人入力は不要。 diff --git a/docs/skills-3080-progress.json b/docs/skills-3080-progress.json index c9c84461..39276a1b 100644 --- a/docs/skills-3080-progress.json +++ b/docs/skills-3080-progress.json @@ -1,9 +1,9 @@ { "todo": 3080, "issue": "https://github.com/AutoDevJapan/cc-pc-tools-rs/issues/283", - "observed_at": "2026-10-24T06:33:39.7015551+00:00", + "observed_at": "2026-10-24T08:15:09.0197014+00:00", "phase_a": "partial; 647 additional text shapes held by execution review", - "phase_b": "PR428までの受入を保持し、追加45候補はraw全読43/伏字付き手順1/許諾文のみ確認1を分けて公開へ反映。RSS生成/季節切替の新2件の実作成・読戻し・metadataも反映した。全16資料の採否/全支持/必要な実使用は継続。", + "phase_b": "PR430受入済みの32配置と454/455読取を保持し、新20評価を別差分へ反映。source86候補をraw84/伏字付き1/許諾文のみ1へ分け、全体474/475へ投影する。最終採否と中央配置は増やしていない。全16資料の残評価/個別許諾/実導入は継続。", "catalog_sha256": "2d73c9a038a41cc220a9687b935bfa1e0b315b65d9bd6d3e54ddb4111972876c", "source_count": 16, "fixed_public_repos": [ @@ -437,8 +437,8 @@ "source": "skills-3080-mizchi-partial-evaluation.json", "complete_definition": "本文の全path読取のみ。個別許諾・支持・採否・実導入は未完。" }, - "all_fulltext_primary_paths_including_partial_sources": 454, - "primary_coverage_definition": "既存10資料固定137+別枠mizchi76+MengTo全入口177+6mile部分64=454source paths。raw全文の集計。6mileは旧21+追加43で、別に伏字付き手順1件と通知だけの評価1件を保持。全16資料の採否/実導入は未完。", + "all_fulltext_primary_paths_including_partial_sources": 474, + "primary_coverage_definition": "既存10資料固定137+別枠mizchi76+MengTo全入口177+6mile部分84=474source paths。支持の全読/走査・伏字付き手順・個別許諾・最終採否は別。全16資料は未完。", "external_revisions": { "count": 1, "target": "diagnosing-bugs", @@ -652,8 +652,8 @@ "definition_of_legacy_latest_name": "Historical PR406 accepted-delta snapshot. Later accepted merges/reviews are in merged_pr_history/latest_merged_pr/received_review_history/latest_received_review; this field is not current queue status." }, "latest_received_review": { - "todo": 3602, - "job": "20261024-153854-todo-3602", + "todo": 3612, + "job": "20261024-172729-todo-3612", "status": "succeeded", "exit_code": 0, "model": "anthropic/claude-sonnet-5-5", @@ -662,28 +662,33 @@ "effort_origin": "owner_request", "native_matched": true, "parent_full_read": true, - "raw_file": "review3602-original123649.md", - "raw_bytes": 7150, - "raw_sha256": "dc124ce210d9203473be211682b4817a7daca7e2f6bd5ff08c92e886b0a6ff09", - "base": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", - "head": "50ab02f3420dbe0c34458708dd82adf482c0f763", - "must": 0, - "suggestions": 6, - "nits": 6, - "scope": "All24file differences, elevenJSON strictparse/no duplicatekeys/UTF8/LF, all45semantic assessments, support422 state/fingerprint mechanical check, source/bundle/manifest/design/model hashes and25mutation paths; no Go/central/network/CI execution.", - "received_at": "2026-10-24T07:09:02.4159729+00:00", + "effective_reasoning_measured": false, + "raw_file": "review3612-original123649.md", + "raw_bytes": 7064, + "raw_sha256": "d8dee23f79c6ca4ef27041a30f5317d9a3982a04d5e865e31e0cd19cf161aa34", + "base": "36722b7b45f227b662843bb515b0e7aff766dba5", + "head": "534d2cd08822febf015617b3ca94e63697cfd5c1", + "must": 1, + "suggestions": 4, + "nits": 5, + "scope": "All16file/allhunks,20semantic records,178support metadata/state,66740cache hash/bytes/line/failurecounts; no Go/central/network/CI. Raw74410report first/legend only, cache bodymetadata aggregate only.", + "received_at": "2026-10-24T08:57:03.3110134+00:00", "resolution_pending": true, - "planned_corrections": "One limitedfollowup: common observedmax and snapshot48fingerprint, exactnegativeguards/aggregatefields, publicrights legend and stable readerrowmapping, historical/current flags and scope, acceptance links and privacy/receipt wording; sourcebytes/adoptioncounts/rawcoverage unchanged.", + "next": "Remove mutable currentcount prose, clarify default rights/newness/policy constraints, strengthen next20 relations and futureledger alignment, boundedfixreview/exactCI/merge", "owner_action_required": false, - "parent_followup": "Public rights definitions and source-based row namespaces, accepted-vs-pending snapshots, privacy removal, common last-verification/name-fingerprint tests and precise mutation guards. This new correction delta awaits its own review/CI/merge." + "parent_followup": "Historical mutable count prose removed, default rights and source/version proposals made explicit, next20/provenance/cache relationships and ledger-aligned future decisions tested. Source bytes and474/475/32/3/8 counters unchanged; this fix needs bounded review/exactCI." }, "latest_merged_pr": { - "scope": "MCP/pointer2 actualdeployment publicevidence and3590fixedninefiles28hunks; not the present new45/RSSseason publication.", - "url": "https://github.com/AutoDevJapan/cc-pc-tools-rs/pull/428", - "head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", - "merge": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", - "merged_at": "2026-10-24T06:33:08Z", - "number": 428 + "head": "00c87391a57467ab3373316229d5ef33e8b8f361", + "url": "https://github.com/AutoDevJapan/cc-pc-tools-rs/pull/430", + "number": 430, + "acceptance_scope": "Original24 difference and12 correction; new20 and body-alias machine triage are separate current pending publicdelta.", + "merge": "36722b7b45f227b662843bb515b0e7aff766dba5", + "review_todos": [ + 3602, + 3605 + ], + "merged_at": "2026-10-24T08:06:59Z" }, "mengto_partial_entrypoint_evaluation": { "fixed_roster": "skills-3080-mengto-fixed-entrypoints.json", @@ -986,6 +991,68 @@ "original_scope_and_raw_response_unchanged": true, "nits": "Historical cohort amendment provenance, latest-review link, dated-prose tense, explicit3590 reader subject and exactlastverification comparison. The lateobservation case reproduced Red; fixed-input test receipts and CI record subsequent executable validation separately." } + }, + { + "todo": 3602, + "job": "20261024-153854-todo-3602", + "status": "succeeded", + "exit_code": 0, + "model": "anthropic/claude-sonnet-5-5", + "effort": "max", + "model_origin": "owner_request", + "effort_origin": "owner_request", + "native_matched": true, + "parent_full_read": true, + "raw_file": "review3602-original123649.md", + "raw_bytes": 7150, + "raw_sha256": "dc124ce210d9203473be211682b4817a7daca7e2f6bd5ff08c92e886b0a6ff09", + "base": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", + "head": "50ab02f3420dbe0c34458708dd82adf482c0f763", + "must": 0, + "suggestions": 6, + "nits": 6, + "scope": "All24file differences, elevenJSON strictparse/no duplicatekeys/UTF8/LF, all45semantic assessments, support422 state/fingerprint mechanical check, source/bundle/manifest/design/model hashes and25mutation paths; no Go/central/network/CI execution.", + "received_at": "2026-10-24T07:09:02.4159729+00:00", + "resolution_pending": false, + "planned_corrections": "One limitedfollowup: common observedmax and snapshot48fingerprint, exactnegativeguards/aggregatefields, publicrights legend and stable readerrowmapping, historical/current flags and scope, acceptance links and privacy/receipt wording; sourcebytes/adoptioncounts/rawcoverage unchanged.", + "owner_action_required": false, + "parent_followup": "Public rights definitions and source-based row namespaces, accepted-vs-pending snapshots, privacy removal, common last-verification/name-fingerprint tests and precise mutation guards. This new correction delta awaits its own review/CI/merge.", + "resolution_pending_at_original_receipt": true, + "effective_reasoning_measured": false + }, + { + "todo": 3605, + "job": "20261024-162643-todo-3605", + "status": "succeeded", + "exit_code": 0, + "model": "anthropic/claude-sonnet-5-5", + "effort": "max", + "model_origin": "owner_request", + "effort_origin": "owner_request", + "effective_reasoning_measured": false, + "parent_full_read": true, + "native_matched": true, + "raw_file": "review3605-original123649.md", + "raw_bytes": 6102, + "raw_sha256": "cfa5bb631d2512a62f410c6adc52f3aee870780fc2c9b8b965bb5b0bee19ee1b", + "base": "50ab02f3420dbe0c34458708dd82adf482c0f763", + "head": "00c87391a57467ab3373316229d5ef33e8b8f361", + "must": 0, + "suggestions": 3, + "nits": 6, + "received_at": "2026-10-24T08:06:56.4177861+00:00", + "scope": "Elevenfiles allhunks; next45JSON allleaf comparisons/representativehunks. Rights24 exactexpansion,40sourceIDs/rows,retention46/48,mutationguards/index191/55557,sourcebytes/139commit checked. No Go/central/network/CI execution.", + "resolution_pending": false, + "nonblocking_resolution": { + "S2": "Reinstate exact not-an-exclusion/all-candidates-accounted/no-new-rights-question wording in next delta. Operationally no provisional exclusion, scope shrink or new owner/rights question is adopted; original owner scope remains authoritative and all candidates are preserved.", + "S1": "Normalize global-scope inventory_ids [null] to [] in next already-needed20-entry publication; current scope explicitly says all candidates, no source ID or adopted count is added.", + "nits": "Amendment labels, individual review base/head/Must chronology, historical411, forty-only reader annotation scope, effectiveReasoningNotMeasured, exact receipt_checked_at terminology carried to next delta. No original execution/version/time will be fabricated.", + "S3": "Add one meaningful public namespace/rights-expansion/provenance consistency test with the next20 schema evolution; current all40/all24 were independently checked by3605." + }, + "owner_action_required": false, + "followup_in_this_delta": "Empty globalID arrays/strong owner constraints, public namespace consistency tests, amendment labels and explicit original-vs-correction review chronology are handled alongside the new20 intake; no new central apply or final disposition.", + "parent_read_time_definition": "received_at is the receipt persistence time, not the reading start or an exact completion timestamp. Parent observed/read the fullresponse before this receipt; reading duration and exact completion were not captured.", + "parent_read_observed_response_at": "2026-10-24T17:04:41.9920154+09:00" } ], "merged_pr_history": [ @@ -1079,6 +1146,14 @@ 3571, 3580 ] + }, + { + "scope": "MCP/pointer2 actualdeployment publicevidence and3590fixedninefiles28hunks; not the present new45/RSSseason publication.", + "url": "https://github.com/AutoDevJapan/cc-pc-tools-rs/pull/428", + "head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", + "merge": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", + "merged_at": "2026-10-24T06:33:08Z", + "number": 428 } ], "current_mengto_delta": { @@ -1199,7 +1274,7 @@ "new_individual_rights_exclusions": 1, "existing_duplicate_receipts_reused": 1 }, - "amended_at": "2026-10-24T07:16:19.7577795+00:00", + "amended_at": "2026-10-24T08:58:26.6672769+00:00", "amendment_job": "20261024-123649-todo-3080", "mcp_pointer_installation": { "real_server_or_rendering_tested": false, @@ -1217,13 +1292,21 @@ "full_context_budget_proven": false, "source": "skills-3080-mcp-pointer-installation-evidence.json", "public_delta_acceptance": { - "head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", - "review_todos": [ - 3590, - 3599 - ], + "accepted_head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", "merge": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", - "pr": 428 + "original_review": { + "todo": 3590, + "head": "ebb023f2b04f4551037fd5bf746819466e96a4b4", + "base": "6905b890d7b280c659e2073c6b561c903c1ed955", + "must": 1 + }, + "pr": 428, + "correction_review": { + "todo": 3599, + "head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", + "base": "ebb023f2b04f4551037fd5bf746819466e96a4b4", + "must": 0 + } } }, "sixmile_additional_entrypoint_evaluation": { @@ -1240,19 +1323,19 @@ }, "sixmile_body_read_coverage": { "metadata_only_primary": 1, - "full_body_read": 64, - "workflow_body_read": 65, - "without_assessment": 55557, - "definition": "One source, disjoint first21+next45 cohorts. Full_body_read means raw unmasked primary paths; redacted workflow and notice-only paths are separate, and are not new unique content or final adoption counts.", + "full_body_read": 84, + "workflow_body_read": 85, + "without_assessment": 55537, + "definition": "One source, disjoint first21+next45+next20. Raw primary84, redacted workflow1 and notice-only1 remain distinct. A path count is not unique content, source safety, permission or adoption.", "expected": 55623, "complete": false, "masked_workflow_body": 1, - "candidate_paths_assessed_or_notice_read": 66, + "candidate_paths_assessed_or_notice_read": 86, "source": "skills-3080-sixmile-evaluation-index.json", - "without_raw_full_read": 55559 + "without_raw_full_read": 55539 }, - "all_workflow_primary_paths_including_partial_sources": 455, - "primary_coverage_definition_additional": "workflow集計455=raw454+伏字付き手順1。未読を除外や読了へ移さず、同一本文の別path/差分再利用の方法を保持する。", + "all_workflow_primary_paths_including_partial_sources": 475, + "primary_coverage_definition_additional": "workflow集計475=raw474+伏字付き手順1。新20件は受領評価を固定原本へ照合し、全raw本文を親が再読した主張とは分ける。", "rss_season_installation": { "content_review": 3591, "full_context_budget_or_implicit_selection_proven": false, @@ -1261,7 +1344,7 @@ "files": 10, "source": "skills-3080-rss-season-installation-evidence.json", "managed_retention_found_enabled": 48, - "public_delta_review_pending": true, + "public_delta_review_pending": false, "discovery_found_enabled": 2, "real_website_or_renderer_tested": false, "content_review_must": 0, @@ -1269,6 +1352,53 @@ 3584, 3591 ], - "content_review_definition": "3584 reviewed RSS initial five files;3591 reviewed RSS three-file amendment and seasonfive. The legacy single content_review field identifies the last content review only." + "content_review_definition": "3584 reviewed RSS initial five files;3591 reviewed RSS three-file amendment and seasonfive. The legacy single content_review field identifies the last content review only.", + "public_delta_acceptance": { + "accepted_head": "00c87391a57467ab3373316229d5ef33e8b8f361", + "merge": "36722b7b45f227b662843bb515b0e7aff766dba5", + "original_review": { + "todo": 3602, + "head": "50ab02f3420dbe0c34458708dd82adf482c0f763", + "base": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", + "must": 0 + }, + "pr": 430, + "correction_review": { + "todo": 3605, + "head": "00c87391a57467ab3373316229d5ef33e8b8f361", + "base": "50ab02f3420dbe0c34458708dd82adf482c0f763", + "must": 0 + } + } + }, + "sixmile_next20_entrypoint_evaluation": { + "excluded": 0, + "metadata_only_primary": 0, + "full_body_read": 20, + "definition": "This third cohort only; source aggregate and final decisions remain separate.", + "candidate_paths": 20, + "installed": 0, + "workflow_body_read": 20, + "integrated": 0, + "source": "skills-3080-sixmile-next20-evaluation.json", + "masked_workflow_body": 0 + }, + "body_alias_triage": { + "mapped_saved_occurrences": 72145, + "encoding_pending": 27, + "source": "skills-3080-body-alias-scan.json", + "valid_normalized": 72118, + "final_disposition_delta": 0, + "semantic_read_delta": 0, + "candidate_alias_leads": 8 + }, + "additional_candidate_hold_snapshot": { + "definition": "Later candidate observation separate from earlier4 comparison snapshot. No names/leafpaths disclosed and no classification recovery is asserted.", + "classification_unverified": true, + "total_with_previous_comparison_holds": 5, + "existence_checked": false, + "size_bytes": null, + "central_post_guard_read_write": 0, + "count": 1 } } diff --git a/docs/skills-3080-review-resolution.md b/docs/skills-3080-review-resolution.md index 23cbc933..76c38b74 100644 --- a/docs/skills-3080-review-resolution.md +++ b/docs/skills-3080-review-resolution.md @@ -362,7 +362,7 @@ Nitは方針タグ4種を公開側で定義し、走査だけの支持30件はre 旧11と新10の入口pathは重複0。支持102+63=165、保存40+35=75、全文12+30=42、走査0+5=5、未保存62+28=90。47は新しい保存source-pathの照合出現数で、物理gzip個数ではない。package外の文脈2件は支持へ加算しない。新規の最終採否は0で、除外8(既存重複7+個別権利1)とそのIDを保持する。 -本文評価は137+76+177+21=411。864は同directoryにnotice保存metadataがある候補群で、許諾済み864件ではない。旧348とは直接比較しない。20件の評価済みと、新40件の研究予約と、未予約804件を区別する。有限batchを全体の打切り上限にしない。 +この次10評価を反映した時点の本文評価は137+76+177+21=411。864は同directoryにnotice保存metadataがある候補群で、許諾済み864件ではない。旧348とは直接比較しない。この節の予約状況は当時の記録で、20件の評価済みと、新40件の研究予約と、未予約804件を区別する。現在値は進行記録と索引を参照する。有限batchを全体の打切り上限にしない。 通常分類の調査3559は完了し、中央rootのGit印がないためowner refreshへ到達しないことを確認した。既存4比較は本文読書き0/容量不明で保持する。guard・登録・Gitを作り替えてclearにする作業は行っていない。2つの新規Skill案の通常の具体的preflightは未作成確認だけを行い、既存保留やroot全体の分類復旧とは分けて記録する。 @@ -421,3 +421,15 @@ Nitは、総合観測時刻を既に記録した最後の確認時刻へ合わ [RSS生成・季節切替の受入記録](skills-3080-rss-season-acceptance.md)、[固定2設計](skills-3080-rss-season-designs.json)、[配置と発見の証拠](skills-3080-rss-season-installation-evidence.json)、[6mileの読取索引](skills-3080-sixmile-evaluation-index.json)を対応付ける。全体の最新採否は[台帳](skills-3080-adoptions.json)、読取の現在値と受入履歴は[進行記録](skills-3080-progress.json)へ集約する。 3602は固定0801af4a..50ab02f3の24差分と45評価の意味を読み、Must0/Suggestion6/Nit6を返した。原応答7150B/SHAdc124ce210d9203473be211682b4817a7daca7e2f6bd5ff08c92e886b0a6ff09を親が保存・全文読了し、job/nativeのSonnet5.5/maxを照合。422支持は状態/指紋の機械照合で、全支持の意味や全16資料の受入ではない。この補正は、公開する個別許諾の説明と出典行の対応、受入済みと未了の表示、時刻/保持対象/負例の確認を整える。原文・notice・Skill bundle・配置fileと既存の読取件数/最終採否は変更しない。この補正時点の新headに対するreview/CI/mergeは、以後の履歴で別に確認する。 + +## 2026-10-24 追加20評価と機械照合 + +[追加20件の受入範囲](skills-3080-next20-acceptance.md)から、本文・個別notice・支持の読取と、保存本文の機械照合を分けて辿れる。現在の値は進行記録と台帳へ集約し、この節に全体の可変件数を複写しない。 + +## 2026-10-24 3612補正 + +3612は固定36722b7b..534d2cd0の16差分を読み、Must1(歴史説明に残った現在件数)を返した。親は原応答とjob/nativeを照合し、歴史文書の可変現在件数を削って索引・進行記録へ集約した。準備時の説明は過去の記録と明記し、411の節にも時点を付けた。 + +Suggestionは、未確定の版順序・低信頼REJECTの出典と親の保留方針を区別し、18件の個別許諾の略記を元の定義へ展開した。新20の出典行と歴史提案の属性、旧45の補正対象IDと全体向け空配列、本人の元制約、キャッシュ3本の件数・指紋をテストする。将来の実採用は一致する台帳行を要件とし、受領テストによる恒久的な採用禁止を除いた。合成の採用正例は関係検証用であり、実採用や権利受入ではない。 + +旧4件の比較保留と新1件の候補保留を分け、非公開receipt名の注記、MCP本文一致の限定根拠、3605の受領保存時刻と読取観測時刻も明記した。この補正は原source/notice/実配置/読取件数を変更せず、固定した新headの関連test/review/CI/mergeを別に確認する。 diff --git a/docs/skills-3080-rss-season-installation-evidence.json b/docs/skills-3080-rss-season-installation-evidence.json index b4d51555..7fec7645 100644 --- a/docs/skills-3080-rss-season-installation-evidence.json +++ b/docs/skills-3080-rss-season-installation-evidence.json @@ -183,7 +183,7 @@ "go_version": null, "go_version_definition": "Not captured with the original successful execution; no current version is backdated.", "execution_time": null, - "execution_time_definition": "Exact process execution time was not captured; checked_at, where present, is the receipt verification time.", + "execution_time_definition": "Exact process execution time was not captured. receipt_checked_at, when present, is the original receipt verification time. result_receipt names the private preserved parent receipt; recorded_result here carries its copied outcome for public inspection.", "receipt_checked_at": "2026-10-24T05:09:24.5933319+00:00" }, { @@ -202,7 +202,7 @@ "go_version": null, "go_version_definition": "Not captured with the original successful execution; no current version is backdated.", "execution_time": null, - "execution_time_definition": "Exact process execution time was not captured; checked_at, where present, is the receipt verification time." + "execution_time_definition": "Exact process execution time was not captured. receipt_checked_at, when present, is the original receipt verification time. result_receipt names the private preserved parent receipt; recorded_result here carries its copied outcome for public inspection." }, { "passed": true, @@ -220,7 +220,7 @@ "go_version": null, "go_version_definition": "Not captured with the original successful execution; no current version is backdated.", "execution_time": null, - "execution_time_definition": "Exact process execution time was not captured; checked_at, where present, is the receipt verification time." + "execution_time_definition": "Exact process execution time was not captured. receipt_checked_at, when present, is the original receipt verification time. result_receipt names the private preserved parent receipt; recorded_result here carries its copied outcome for public inspection." } ], "preserved_scope": { @@ -237,6 +237,6 @@ }, "publication_scope": "This evidence follows already completed new-only central operations; public adoption/coverage flags must be reconciled with the actual fixed receipts before counting it. No source code or UI was run by installing these instructions.", "self_authored_model_and_fixture_execution_definition": "The separate owned Go numerical/XML fixtures ran successfully as recorded above. Installation/discovery did not execute upstream code, a renderer, a real website or an AI model turn.", - "amended_at": "2026-10-24T07:16:19.7577795+00:00", + "amended_at": "2026-10-24T08:15:09.0197014+00:00", "amendment_definition": "Verification metadata/recording only. No new source execution, fixture rerun, central read/write or discovery. Original observed/checked timestamps, source hashes and reviewed Skill bytes remain unchanged." } diff --git a/docs/skills-3080-sixmile-evaluation-index.json b/docs/skills-3080-sixmile-evaluation-index.json index 1f86c66f..3c9b2647 100644 --- a/docs/skills-3080-sixmile-evaluation-index.json +++ b/docs/skills-3080-sixmile-evaluation-index.json @@ -4,12 +4,12 @@ "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", "tree_sha": "5782ae7deffe5024e15b6e090327385c10f76273", "entrypoints_expected": 55623, - "candidate_paths_assessed_or_notice_read": 66, - "raw_unmasked_primary_full_read": 64, - "workflow_primary_full_read": 65, + "candidate_paths_assessed_or_notice_read": 86, + "raw_unmasked_primary_full_read": 84, + "workflow_primary_full_read": 85, "masked_workflow_primary": 1, "metadata_only_primary": 1, - "primary_not_raw_full_read": 55559, + "primary_not_raw_full_read": 55539, "no_adoption_cap": true, "cohorts": [ { @@ -39,22 +39,36 @@ "support_scan_only": 85, "support_unsaved": 176, "definition": "New fixed intake with masked workflow and notice-only candidates kept separate." + }, + { + "raw_unmasked_primary_full_read": 20, + "support": 178, + "support_saved": 97, + "workflow_primary_full_read": 20, + "definition": "Received3601. Twenty primary/notice paths, support states and independent source anchors reconciled. One redacted scan remains a scan; no final decision is implied.", + "candidate_paths": 20, + "support_raw_unmasked_full_read": 74, + "support_unsaved": 81, + "artifact": "skills-3080-sixmile-next20-evaluation.json", + "support_masked_workflow_full_read": 0, + "support_scan_only": 23, + "id": "next20" } ], - "support": 587, - "support_saved": 321, - "support_raw_unmasked_full_read": 168, + "support": 765, + "support_saved": 418, + "support_raw_unmasked_full_read": 242, "support_masked_workflow_full_read": 23, - "support_scan_only": 90, + "support_scan_only": 113, "support_saved_unread": 40, - "support_unsaved": 266, - "definition": "One source with disjoint immutable evidence cohorts. Old21 subset counters must not be relabelled as the full current source. Aggregate raw coverage excludes maskedworkflow1 and metadata-only1. Current final adoption ledger remains separate.", - "support_workflow_full_read": 191, - "candidate_paths_without_assessment": 55557, + "support_unsaved": 347, + "definition": "One source, three disjoint evidence cohorts: first21/next45/next20. Aggregate raw84/workflow85/notice-only1 is separate from final adoption and from unique content. Historical cohorts retain their original anchors and actors. Unknown/failed/held remain unfinished.", + "support_workflow_full_read": 265, + "candidate_paths_without_assessment": 55537, "current_adoption_source": "skills-3080-adoptions.json", "read_coverage_is_not_adoption": true, "public_reflected": true, - "amended_at": "2026-10-24T06:33:39.7015551+00:00", + "amended_at": "2026-10-24T08:15:09.0197014+00:00", "implementation_prerequisites_at_preparation": [ "Index/cohort identity and raw/masked/scan actor acceptance tests", "Global source aggregate/read-count projection tests include additionalraw43", diff --git a/docs/skills-3080-sixmile-next20-evaluation.json b/docs/skills-3080-sixmile-next20-evaluation.json new file mode 100644 index 00000000..0e361f8f --- /dev/null +++ b/docs/skills-3080-sixmile-next20-evaluation.json @@ -0,0 +1,4824 @@ +{ + "anchors": { + "body_fingerprint": "c6a69b6cc0771ae23c52085772addb8d937b1a1567001e374cdaaa83407f8ecf", + "definition": "Derived from independent fixed-source metadata plus the received, state-reconciled reader claims before public reflection, not from a live future public ledger.", + "primary_actor_fingerprint": "c7651ac3298c91b98ba06f186b50022e238afc23ee9ec780d4d3a9083a487de4", + "support_fingerprint": "77d8f6f7322344c81b3a9b430d2fdde8e82d82a682dddbe3c97a578d7340918f" + }, + "central_write": 0, + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "counts": { + "candidate_assessments": 20, + "individual_notices": 20, + "masked_primary": 0, + "masked_scan_paths": 1, + "metadata_only_primary": 0, + "raw_unmasked_primary_full_read": 20, + "support": 178, + "support_masked_workflow_full_read": 0, + "support_raw_unmasked_full_read": 74, + "support_saved": 97, + "support_saved_unread": 0, + "support_scan_only": 23, + "support_unsaved": 81, + "support_workflow_full_read": 74, + "workflow_primary_full_read": 20 + }, + "definition": "Twenty received semantic assessments and their individual notice/support states are reflected in this cohort. Source/global current coverage is in the canonical index/progress, not a mutable numeric prose copy here. Original assessments and proposals remain historical, not new owner policy, source permission, or final decisions.", + "entries": [ + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 3027, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "Needs two metered VLM API keys kept in scripts/config.json (owner rule: no API-key AI calls); every image/video goes to Zhipu or Alibaba endpoints.", + "Layout drift: 11 command lines use skills/image-analysis/scripts/*, but the package dir is video-image-file-analysis.", + "Frontmatter name embeds spaces and a Chinese tagline; body forces 'must use this skill, never PIL/pytesseract'.", + "vision.py, vision_manager.py, config.json unsaved: the published config.json could hold the publisher's keys; do not copy or run." + ], + "git_blob": "f57557982c479d3a368191b0def14c216b49a307", + "historical_reader_proposal": { + "candidate_disposition": "not_adoptable_as_is", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 1, + "reader_reference_namespace": "3601", + "reason": "Metered AI API keys, external image egress, unsaved scripts and path drift outweigh the small value.", + "required_changes": [ + "If revisited: instructions-only or Go CLI; subscription/OAuth route only; fix name and paths; drop the 'must use' override; add an image-egress warning." + ], + "todo": 3601, + "use": "Image/video/file analysis through a CLI wrapper over Zhipu GLM-4V or Qwen-VL (describe, OCR, locate, compare, video summary).", + "value": "Low. Host agents already read images; only the model-choice table and flag set (--thinking, --json, multi --image) add information. Catalog overlap: none wrapping these VLM APIs." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.)", + "holder": "'Video-Image-File-Analysis' (a project label, not a named person or entity)", + "license_kind": "MIT", + "not_covered": [ + "unsaved scripts' authorship and third-party code", + "Zhipu/Alibaba API terms" + ], + "notice_bytes": 1103, + "notice_git_blob": "62fa004ecdca4ea2f8076087a43cce23ffb9aad1", + "notice_path": "skills/jaccchina-ai/video-image-file-analysis/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "f7b99740c808e20785a3666c8e42210ff6e3cd9c7421644ee1e2bc1f52e46eb7", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "holder vs registry owner jaccchina-ai", + "year 2026 only" + ], + "reader_scope_shorthand_at_intake": "default" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:38362e31b144971203c890fbedfeccae8282e7b0b573ea83779ae3dae4984d17", + "masked_value_count": 0, + "name": "video-image-file-analysis 多模态视频图片分析专家", + "negative_candidate": "Secrets-in-config pattern together with an instruction that overrides the agent's tool choice.", + "package_tree_fingerprint": "602a5a39c572a076d1bfae78a6d6059e0aed80207877d24a9e4fd16ffeef3669", + "path": "skills/jaccchina-ai/video-image-file-analysis/SKILL.md", + "positive_candidate": "Model-choice table by scenario plus a prompt matrix (describe, OCR, locate).", + "reader_original_row": 1, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "No metered AI API client or copied secret config. Useful model-choice concepts may be adapted to an existing authorized OAuth/local tool; a distributed Python tool is not globally banned.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "ec192f96235d1eeddd499246227fae486680bd7dd12276faf5de5368124b2f65", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/jaccchina-ai/video-image-file-analysis/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 1103, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "62fa004ecdca4ea2f8076087a43cce23ffb9aad1", + "masked_value_count": 0, + "path": "skills/jaccchina-ai/video-image-file-analysis/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "f7b99740c808e20785a3666c8e42210ff6e3cd9c7421644ee1e2bc1f52e46eb7", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 356, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "e15061809bb110ad516a9624f3b0246fcd31a79e", + "masked_value_count": 0, + "path": "skills/jaccchina-ai/video-image-file-analysis/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "1575cdae537f27686779fa2f0dacc30ad53ffc4b5e2a1037fa8cb46844f917b9", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "81361e33ea0e36d63ac276178d3cd8a3bb4eaf0c", + "masked_value_count": 0, + "path": "skills/jaccchina-ai/video-image-file-analysis/scripts/config.json", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "70de209d2b14a31be33418719690af5fd63b6d70", + "masked_value_count": 0, + "path": "skills/jaccchina-ai/video-image-file-analysis/scripts/vision.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "e8b0c7728e400485c71d01b2b9164f3f342364e2", + "masked_value_count": 0, + "path": "skills/jaccchina-ai/video-image-file-analysis/scripts/vision_manager.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + } + ], + "use": "Image/video/file analysis through a CLI wrapper over Zhipu GLM-4V or Qwen-VL (describe, OCR, locate, compare, video summary).", + "value": "Low. Host agents already read images; only the model-choice table and flag set (--thinking, --json, multi --image) add information. Catalog overlap: none wrapping these VLM APIs." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 5353, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "Prefers a global npm install of alibabacloud-dataworks-mcp-server and an MCP config holding AccessKey ID/Secret in plain JSON; any use adds an MCP integration (catalog flag no_automatic_new_mcp_install).", + "Env var names disagree inside the package (ALICLOUD_ACCESS_KEY_* vs ALIBABA_CLOUD_ACCESS_KEY_*); stray 'Category: service' line; README is only 'skill for open claw'.", + "sources.md lists official Alibaba docs/GitHub/npm without attribution; list_openapi_meta_apis.py and agents/openai.yaml unsaved.", + "Good rule: summarize affected resources and confirm before delete/stop/suspend." + ], + "git_blob": "5ee7775d2952ea6914b00b8cb12bf242b203c728", + "historical_reader_proposal": { + "candidate_disposition": "conditional_service_specific", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 2, + "reader_reference_namespace": "3601", + "reason": "Value is tied to one cloud product; text itself is copyable under the notice but the holder is unnamed.", + "required_changes": [ + "If DataWorks is used: pin the MCP server version, least-privilege RAM sub-account with read-only default, unify env names, Go instead of the Python quickstart, keep the destructive-operation confirmation." + ], + "todo": 3601, + "use": "Operate Alibaba Cloud DataWorks (nodes, workflows, ops center, data quality, lineage, members) through OpenAPI or the vendor MCP server, with metadata-first API discovery.", + "value": "Useful only if DataWorks is used; no overlap with owner products (catalog overlap: none). Body is mostly API-name lists." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.)", + "holder": "not named (template placeholders only)", + "license_kind": "Apache-2.0 full text (canonical)", + "not_covered": [ + "Alibaba docs and API terms", + "MCP server package licence", + "unsaved script/yaml" + ], + "notice_bytes": 11357, + "notice_git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "notice_path": "skills/samuelhsin/alicloud-dataworks-skill/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "licensor identity", + "whether text derives from Alibaba material" + ], + "reader_scope_shorthand_at_intake": "default" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:036504b6105bb99cbda569189a900570bb262b11be02b359a10117150353d1c4", + "masked_value_count": 0, + "name": "alicloud-dataworks", + "negative_candidate": "AccessKey secret written into an MCP JSON config; unpinned global npm install.", + "package_tree_fingerprint": "d215019c658835f9b4f1f5dd39d9ae6fbe9167470d47b3d28f19da6b10859292", + "path": "skills/samuelhsin/alicloud-dataworks-skill/SKILL.md", + "positive_candidate": "Destructive-operation policy plus 'selection questions' (project, region, operation type, target IDs).", + "reader_original_row": 2, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "Service-specific metadata discovery remains conditional on the task and actual access. No new permanent MCP authority, no generic owner confirmation for already authorized ordinary operations.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "ba3beb95bcbfbcbad31593b4d4bbf3f96e86f23ef8c8cd6aaea56ef656f7355d", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/samuelhsin/alicloud-dataworks-skill/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 11357, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "masked_value_count": 0, + "path": "skills/samuelhsin/alicloud-dataworks-skill/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 47, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "257f3c6d4795a4af1bd14eee770e8176418b876c", + "masked_value_count": 0, + "path": "skills/samuelhsin/alicloud-dataworks-skill/README.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "649b4ef52f19f6025a5bb0ffd14c9febdf2c692df069e6caf20f9765cf2cf7bc", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 304, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "2aa0d6acf6cf36600336cc83311b26e462f15e71", + "masked_value_count": 0, + "path": "skills/samuelhsin/alicloud-dataworks-skill/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "3074f50ee89d9c7b7a0287a74ce3f4e7b4943a2ffde3a11717a7d0253405e22c", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "d18f427b59423dd03457d4d233526cab3d1e5c02", + "masked_value_count": 0, + "path": "skills/samuelhsin/alicloud-dataworks-skill/agents/openai.yaml", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 2225, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "b4b6bf7102fc9605907381981d7887745b8f8a47", + "masked_value_count": 0, + "path": "skills/samuelhsin/alicloud-dataworks-skill/references/mcp_server.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "4c68d63e6107a7c13f61093132af0c3d3e23c76e5f8ad913064d141481109793", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 931, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "656c7c1f9cb50fd5f3d49769861ecde5df18a799", + "masked_value_count": 0, + "path": "skills/samuelhsin/alicloud-dataworks-skill/references/sources.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "6516b637bd67f02167e8c57d64b0474efe4a51c4f56a78cb07bda4bf0268acaf", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "710db8e11af06c18676d72f25cb6dce45915b1d1", + "masked_value_count": 0, + "path": "skills/samuelhsin/alicloud-dataworks-skill/scripts/list_openapi_meta_apis.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + } + ], + "use": "Operate Alibaba Cloud DataWorks (nodes, workflows, ops center, data quality, lineage, members) through OpenAPI or the vendor MCP server, with metadata-first API discovery.", + "value": "Useful only if DataWorks is used; no overlap with owner products (catalog overlap: none). Body is mostly API-name lists." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 3892, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "Claims 'does NOT send data to external servers / no network' while the workflow pushes the report to Telegram/Discord and edits cron jobs; audit_wizard.py, health_monitor.py, install.sh that would prove it are unsaved.", + "Drift: frontmatter and README say 1.0.0, registry is 1.5.0; NOTICE.md and README say MIT, README_CN says MIT-0 'no attribution needed'; NOTICE has no licence text.", + "Ships the author's runtime artifacts (health_report_latest.md; config/config.json unsaved); registers a 48h cron job and runs Python." + ], + "git_blob": "1e39bbbcebec8e8108abf6fa080bfb58e06e6460", + "historical_reader_proposal": { + "candidate_disposition": "reference_only_no_copy", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 3, + "reader_reference_namespace": "3601", + "reason": "Concept useful; executable parts are platform-specific and unverifiable; licence basis ambiguous.", + "required_changes": [ + "If adapted: Go checks for AGENTS.md size drift and scheduler-job hygiene, keep dry-run default and fix+verify pairing, drop Telegram/Discord push, settle MIT vs MIT-0 first." + ], + "todo": 3601, + "use": "Health audit and auto-fix for an OpenClaw install: prompt-file size drift, cron-job violations, orphan sessions, token-cost trend, optional cache check; report pushed to Telegram/Discord; 'health fix N' replies trigger repairs.", + "value": "Moderate as a design reference for agent-cost hygiene: measured baselines, SOUL.md size thresholds, compaction at 50/70 percent, cheapest model for monitor jobs, fix-then-verify. Not runnable here (OpenClaw-only files/APIs, scripts unsaved). Catalog overlap: none for agent-config auditing." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "attribution-only notice; READMEs add MIT vs MIT-0", + "holder": "halfmoon82 (DeepEye)", + "license_kind": "attribution NOTICE that names 'MIT License' with no licence text", + "not_covered": [ + "the licence text itself", + "OpenClaw/ClawHub terms", + "unsaved scripts and config" + ], + "notice_bytes": 316, + "notice_git_blob": "0b2b6f183a6b1b09e853a50cebae87e857c7100a", + "notice_path": "skills/halfmoon82/openclaw-health-audit/NOTICE.md", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "d75ae5fb1d565e59be089c3c4f9a4970e09c8481af69879149d236dfdbdcae28", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "MIT or MIT-0", + "year", + "text of the grant" + ] + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:c280c5e407cd568e877d1e8912002edc41241a37841c09b07a0382baaf1db4cf", + "masked_value_count": 0, + "name": "openclaw-health-audit", + "negative_candidate": "Safety claims contradicted by its own workflow; broad triggers ('audit', '运行监控').", + "package_tree_fingerprint": "537fdfe7e18a2718f57fd3e6a55660932f787bf829db3ad325e5049a84bc028b", + "path": "skills/halfmoon82/openclaw-health-audit/SKILL.md", + "positive_candidate": "'What this skill does NOT do' table, dry-run-first workflow, measurable thresholds in layer-audit-guide.md.", + "reader_original_row": 3, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "No default cheapest-model override of owner model/effort. Size/percentage thresholds are source design choices, not universal policy. No automatic message/config edits or new permission inferred.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "9a4f5be50a1ef1e009b053495c89f8b75e30d2038f270a45b345bce07f3a2e07", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/halfmoon82/openclaw-health-audit/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 316, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "0b2b6f183a6b1b09e853a50cebae87e857c7100a", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/NOTICE.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "d75ae5fb1d565e59be089c3c4f9a4970e09c8481af69879149d236dfdbdcae28", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 3473, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "b3e0961104f25bcd5091d34367984a381e6cb8ec", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/README.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "02b82995746d93972767a64f3df19ddd09e9256b5c183d740f48905f0e7ea171", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 394, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "a3478c3b065aaa64274d9c615ca96b04a09a424f", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/README_CN.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "dd042bb3e3b39e0dea217bf53cfba6882771a14e90b8d8ad8f60a4ea243b9e1c", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": true, + "bytes": 3083, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "d8a806d22216500a25e660936db5a1a16b66d8ca", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/README_Humanities.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "ca72724beeff27cb6edf12ab814a090ecb9997ee24eed2dbf62847ceeb91d323", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 9718, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "2b3c002ea7324de1cf5393e9724e0f5a65e4ae62", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/README_v1.4_设计哲学与演进史.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "30c0ce61cfa8d898c6dad36c241e1140b1fdb42a78377a28ad4f3a822650b236", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 652, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "649fc4c88334ff3a494f5a689666e200125777b9", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "d83d72a42c2275970e0d7e349b7f0dfbf2e5eb63489a6aecc4e74510d97afa56", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "80e8ef22a65bd2f66346bd59c2fc615c9bbd1a19", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/clawhub.yaml", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "68392263612b4e3936c9e74ad383ca93fccf6e60", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/config/config.json", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "ee241a8baa8f6bc0b5df4ceb801443d32837d485", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/config/config.template.json", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 201, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "0fd5cd3865b3d95b1489228dcbfde7d0923659d6", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/health_report_latest.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "d14750bcb836f4b9995d1acff51c21648fc27b710a09d84ec9ca4e9625d53bbf", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "44873ff75c58123c45e4de023b6134f0c00e6c82", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/package.json", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 4579, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "4b9c3e41f1b9ba3367978f87bb6745ae339d0bd7", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/references/layer-audit-guide.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "06c7048c07406b47df004597b90e7bbdaa2540dc4f01e37cc6bb00e70599e16b", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "4af8ec34c5cb1d9e6e538d87989d63555fd0b679", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/scripts/audit_wizard.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "941eb978e5e837b7ee77a0799a2aa9ae966c3262", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/scripts/health_monitor.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "dca9d5830d3fb4116f4c85a51b7a67927bd14907", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/scripts/install.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 1701, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "e3ef4986f21d5a0985eebf404b0175484634fcd2", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/templates/SOUL_COMPACT.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "afe00024494d17fc7fd6b090f99ad5e602414cd29803df3bf4f60f3ea2e7f77e", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "8870e2b507abd175dd1317ce9ada15c243c060a7", + "masked_value_count": 0, + "path": "skills/halfmoon82/openclaw-health-audit/templates/cron_health_job.json", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + } + ], + "use": "Health audit and auto-fix for an OpenClaw install: prompt-file size drift, cron-job violations, orphan sessions, token-cost trend, optional cache check; report pushed to Telegram/Discord; 'health fix N' replies trigger repairs.", + "value": "Moderate as a design reference for agent-cost hygiene: measured baselines, SOUL.md size thresholds, compaction at 50/70 percent, cheapest model for monitor jobs, fix-then-verify. Not runnable here (OpenClaw-only files/APIs, scripts unsaved). Catalog overlap: none for agent-config auditing." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 10459, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "All traffic and the token sit at Maton (gateway.maton.ai, ctrl.maton.ai); needs MATON_API_KEY from a maton.ai account; pricing and retention are not stated in the package.", + "Examples use bash heredoc 'python <' (runs a shell script with python) and the parameter table calls 'the text to read'.", + "read.sh is unsaved (bytes unknown); an unseen script behind a generic trigger is an arbitrary-file-read surface.", + "Description repeated as overview; no path limits or safety notes." + ], + "git_blob": "1b8df61e98d04beffdf032b4fb185b3508df5589", + "historical_reader_proposal": { + "candidate_disposition": "not_adoptable_as_is", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 6, + "reader_reference_namespace": "3601", + "reason": "Defective and unverifiable; nothing reusable.", + "required_changes": [ + "None worth making; rebuild only if a distinct need appears." + ], + "todo": 3601, + "use": "Intended to read file contents on 'cat file' requests through read.sh.", + "value": "None found beyond host read tools; 539 bytes of boilerplate." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.); byte-identical with entries 9 and 20", + "holder": "not named", + "license_kind": "Apache-2.0 full text (canonical text with a leading blank line, no trailing newline; read via diff against 261eeb9e)", + "not_covered": [ + "read.sh" + ], + "notice_bytes": 11357, + "notice_git_blob": "7a4a3ea2424c09fbe48d455aed1eaa94d9124835", + "notice_path": "skills/jwu26/file-reader/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "licensor", + "authenticity" + ], + "reader_scope_shorthand_at_intake": "default; byte-identical with entries 9 and 20" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:0025f397a753732d038547b64ff253703944590dadece4e5eb684211f0b1a343", + "masked_value_count": 0, + "name": "file-reader", + "negative_candidate": "Broken command line plus an unreviewable script behind a generic trigger.", + "package_tree_fingerprint": "dbfb1f8df05b911514374dd628c08f0025dc564877b1926da1968dce8a5b91e9", + "path": "skills/jwu26/file-reader/SKILL.md", + "positive_candidate": "Single-purpose scope is the only positive trait.", + "reader_original_row": 6, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "A broken generic reader wrapper is not automatically useful. Preserve the unexamined helper and specific deficits; do not turn this assessment into an ungrounded whole-repository exclusion.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "ceb975b53ca77ed573694afda13ff25f0bf63d52a27dd6d9da56940254c52e12", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/jwu26/file-reader/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 11357, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "7a4a3ea2424c09fbe48d455aed1eaa94d9124835", + "masked_value_count": 0, + "path": "skills/jwu26/file-reader/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 273, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "6e0db2b9e564ba293f9e4056c5f113b1cd8dab59", + "masked_value_count": 0, + "path": "skills/jwu26/file-reader/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "9ef87f1b0244b9708a877cd6d111fdd222fb15220621f833f2274251aca575c9", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "f344eebf98eb3e60f0a8958e84ec415733e0675d", + "masked_value_count": 0, + "path": "skills/jwu26/file-reader/read.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + } + ], + "use": "Intended to read file contents on 'cat file' requests through read.sh.", + "value": "None found beyond host read tools; 539 bytes of boilerplate." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 7618, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "Default model anthropic/claude-haiku-4-5 via ANTHROPIC_API_KEY or OPENAI_API_KEY (metered, owner rule: no API-key AI calls); only the local Ollama route avoids keys.", + "SKILL.md says Excel is unsupported and files load fully in memory; README says Excel/JSON and streaming. src/csv-brain.js is unsaved, so neither can be verified.", + "README carries sales links (Gumroad, Fiverr, Ko-fi) and 'after purchase' wording: a paid edition may exist with other terms; MIT here covers this copy.", + "No instructions telling the agent when or how to use it." + ], + "git_blob": "f3a2462a44a70dbb9e574631986c7b44fcde6732", + "historical_reader_proposal": { + "candidate_disposition": "reference_only_no_copy", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 7, + "reader_reference_namespace": "3601", + "reason": "Metered default, unverifiable code, contradictory capability claims.", + "required_changes": [ + "If adopted: write an agent procedure, Go implementation, Ollama/subscription route only, keep the 'profile + 5 sample rows' egress rule." + ], + "todo": 3601, + "use": "Node.js CSV loader/profiler with structured query() and AI-backed ask() via Anthropic, OpenAI or local Ollama.", + "value": "Low to moderate. A library README, not an agent procedure; agents can analyse CSV with code. Reusable idea: send only the column profile and first 5 rows to a model. Catalog overlap: spreadsheet/data skills by purpose." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.)", + "holder": "Shadow Rose", + "license_kind": "MIT", + "not_covered": [ + "paid edition terms", + "unsaved src/csv-brain.js" + ], + "notice_bytes": 1068, + "notice_git_blob": "c7cbbdb25a4df4af83afc5af2ba1ea2370bb298c", + "notice_path": "skills/theshadowrose/csv-brain/LICENSE.md", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "8bd0632a9aa3e03bf1521b4569d60b56b9d6adff2173b5781a828628424a2713", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "registry owner theshadowrose = Shadow Rose" + ], + "reader_scope_shorthand_at_intake": "default" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:e63e22076c3062ee0a0bb48a460ad322f515693a5a22a66d1f4f39aedc60f6b8", + "masked_value_count": 0, + "name": "CSVBrain Natural Language Data Queries", + "negative_candidate": "Contradictory capability claims plus a metered-key default.", + "package_tree_fingerprint": "a2368e9a76a347826f8dce5fe93e19b097877d4eaa5f3858a2b9cbb93915fd23", + "path": "skills/theshadowrose/csv-brain/SKILL.md", + "positive_candidate": "Egress-minimising design (profile + 5 sample rows) and a non-throwing 'AI unavailable' fallback.", + "reader_original_row": 7, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "Sample count is not privacy proof. No AI API keys/new fees; existing OAuth/local routes only. Do not invent a blanket ban on distributed Python or a paid product solely because its free source mentions sales.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "1a76399e19bf2f2ade7fec5f65d3487ff7a94a66218fed46ebb9cf08661122f6", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/theshadowrose/csv-brain/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 1068, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "c7cbbdb25a4df4af83afc5af2ba1ea2370bb298c", + "masked_value_count": 0, + "path": "skills/theshadowrose/csv-brain/LICENSE.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "8bd0632a9aa3e03bf1521b4569d60b56b9d6adff2173b5781a828628424a2713", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 3594, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "ffed54ababb2452c6b1b96d4e2119271efa44ca0", + "masked_value_count": 0, + "path": "skills/theshadowrose/csv-brain/README.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "8e547d93c2d230db2177d2395a183fbda7d64d871bb9b8e68781bb8729ad9fb7", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 277, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "717a866b9a265194530989e17917caa26094cca6", + "masked_value_count": 0, + "path": "skills/theshadowrose/csv-brain/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "d43618f1194b1882f89d7234377034c08e32441d8c72351b40d1c8f720af38bf", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "9c28de149fc5a9674bae1ee8f8d859cb2ef05510", + "masked_value_count": 0, + "path": "skills/theshadowrose/csv-brain/src/csv-brain.js", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + } + ], + "use": "Node.js CSV loader/profiler with structured query() and AI-backed ask() via Anthropic, OpenAI or local Ollama.", + "value": "Low to moderate. A library README, not an agent procedure; agents can analyse CSV with code. Reusable idea: send only the column profile and first 5 rows to a model. Catalog overlap: spreadsheet/data skills by purpose." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 10167, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "SKILL.md has no frontmatter (no name/description), so loaders cannot register it.", + "Self-issued claims (94%+ acceptance, 'zero hallucinations', 'security-audited, approved for production'); SECURITY.md is dated 2026-03-25 for v0.2.0 while the registry is 0.2.5, and says it answers ClawHub review findings.", + "Contradictions: token called read-only but the CLI has remediate --commit --push and a GraphQL applyFixes(path, commit, push); a cloud API taking a local path is implausible; 'gomboc config --show-token' prints the token; setup.md appends the PAT to ~/.bashrc.", + "Referenced requirements.txt and gomboc.mcp.server do not exist in the tree; examples/vulnerable.tf is really .tf.md; docker image gombocai/mcp:latest is unpinned; cli-wrapper.py, docker-compose.yml, verify-setup.sh, .clawhub files unsaved." + ], + "git_blob": "812942676c37baebe675fc58e396f1cb82b6d062", + "historical_reader_proposal": { + "candidate_disposition": "not_adoptable_as_is", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 8, + "reader_reference_namespace": "3601", + "reason": "Unverifiable self-certification, broken references, SaaS dependency.", + "required_changes": [ + "Only if Gomboc is chosen: add frontmatter, pin the image digest, remove token echo and profile persistence, verify claims against Gomboc primary docs." + ], + "todo": 3601, + "use": "Wrapper docs for the Gomboc.ai Community Edition remediation service: scan/fix/remediate through a Python CLI, a docker MCP server, a GitHub App/Action.", + "value": "Low here: depends on a third-party SaaS token and code leaves the machine; IaC remediation is not a current owner workflow. Catalog overlap: general security review and Terraform deploy skills only." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.)", + "holder": "'OpenClaw Community' (generic; neither registry owner iiamit nor Gomboc)", + "license_kind": "MIT", + "not_covered": [ + "Gomboc SaaS, ORL and docker image terms", + "unsaved scripts" + ], + "notice_bytes": 1075, + "notice_git_blob": "ac3fcf4e30760436f1645201e12b552264650498", + "notice_path": "skills/iiamit/gomboc-security-community/LICENSE.md", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "bd42c8dc7b807e3674a6be6b54abaaa266877515d64521ba16e8cc4312d06f98", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "authority of 'OpenClaw Community' to license" + ], + "reader_scope_shorthand_at_intake": "default" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:1beb1e150dc16b49d649ed55f886c18d7e5e2e9b22ac42731892384807cb58ff", + "masked_value_count": 0, + "name": "gomboc-security-community", + "negative_candidate": "Self-certification presented as audit evidence; a secret persisted in a shell profile.", + "package_tree_fingerprint": "98989e5bc71080868a36079c4bb2106f7789c945a9326e2b8e49aa247ea39eba", + "path": "skills/iiamit/gomboc-security-community/SKILL.md", + "positive_candidate": "Least-privilege token advice (per-environment tokens, CI secrets) and the deterministic-fix framing.", + "reader_original_row": 8, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "Treat self-certification as a claim, not verified safety. Unknown service/code remains pending; do not expose tokens or infer a new all-SaaS ban.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "9344438ee48824b19e497cf81244d114a8df75100449d8079668e772c308ab22", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/iiamit/gomboc-security-community/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "724f0e3b9c75b66c1ae80b826d9f433f45b0391d", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/.clawhub.yml", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "be575ea02520ba976b90c6fda19b74ce0c2538b1", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/.clawhub/origin.json", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 2031, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "d5d37620d257bc297da71ddf0810c5fa417a44df", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/CHANGELOG.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "e0fb3c9c4d584ab9fc6a8b8dc8a777e86ea79aec4a05e0108ecd8a982d58c92b", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 1075, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "ac3fcf4e30760436f1645201e12b552264650498", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/LICENSE.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "bd42c8dc7b807e3674a6be6b54abaaa266877515d64521ba16e8cc4312d06f98", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 2833, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "959c4d8295791af33797cab7112af6a34c621379", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/README.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "f925cd5a2643b04173fed67421a12b79dbbc149debe53fd1d63b91ca27ae7982", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 4587, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "3e1142f295903cb7dcbf663d010be82e2802893b", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/SECURITY.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "a83ce98ab55b72e7fc459da4117dcbf014d1af9b77dc21869680323297ca4557", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 326, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "e9eb1f1d45bc5e0e0a4fd423f37398c31adf53dd", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "515cd8643f90a8217dd0a8f094377e8ad6f9124357427319701e75c9834cd624", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": true, + "bytes": 1477, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "3e76322f857785f34a61ff830e41efd83110a525", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/examples/vulnerable.tf.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "ca49bedce08032dafca5119facc7ed82f7124becb501e2977c72383ea0a42067", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 3001, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "8d66629a4326fc5bfbf4ecf7950fe140835100de", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/references/github-action.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "be1ccd0334adf8da32ce1700eda5eacf6313493c2f7087f00097462ed5ed0d94", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 2240, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "838bbb5a3615773202f729b113bf7343d0b64227", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/references/mcp-integration.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "df6eaa1f20b4372818e336f202d0636a0b5e0cd8d5306d365d5dd9f6507457da", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 1507, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "be6bfa54b7a534ae374fc3b6ac04294929408828", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/references/setup.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "37c0f0cabf3663445d8d8cbac92bd80a7cbbc61a67ca81aaf445dc049b3570d4", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "c47c72dcd50f75e1f5626a70fb8fb41adacf6729", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/scripts/cli-wrapper.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "31a83e95a9e4b3419eafb5e0155fc5bb5966c37a", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/scripts/docker-compose.yml", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "caace8c2f4f90927e7b81f3484ff9b880e224252", + "masked_value_count": 0, + "path": "skills/iiamit/gomboc-security-community/scripts/verify-setup.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + } + ], + "use": "Wrapper docs for the Gomboc.ai Community Edition remediation service: scan/fix/remediate through a Python CLI, a docker MCP server, a GitHub App/Action.", + "value": "Low here: depends on a third-party SaaS token and code leaves the machine; IaC remediation is not a current owner workflow. Catalog overlap: general security review and Terraform deploy skills only." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 14661, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "ARK_API_KEY against a China-region endpoint (ark.cn-beijing.volces.com); conflicts with the owner rule of no API-key AI calls.", + "Drift: SKILL.md 1.0.0 vs CHANGELOG 1.1.0 vs registry 1.0.3; seedance.py path differs between docs (~/.claude/skills/... vs /root/.openclaw/...); macOS 'open' and ~/Desktop.", + "how_to_send_video_via_feishu_app.md embeds a Feishu open_id (personal identifier, not reproduced) and an OpenClaw-only message tool flow; seedance.py unsaved; many 'python3 -c' JSON snippets." + ], + "git_blob": "1a1eb31117bef05af4afa6e351d8fd27efddd2ea", + "historical_reader_proposal": { + "candidate_disposition": "conditional_service_specific", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 9, + "reader_reference_namespace": "3601", + "reason": "Execution path is a metered AI API key; content is a vendor API reference.", + "required_changes": [ + "If Seedance is ever used: Go client, key from a secret store, Windows paths, remove the Feishu document, pin model IDs from primary docs." + ], + "todo": 3601, + "use": "Generate videos with ByteDance Seedance through the Volcengine Ark API (text/image-to-video, first/last frame, reference images, draft mode, polling, download) via seedance.py or raw curl.", + "value": "Reference value: precise model/parameter table, draft-then-final cost saver, return_last_frame chaining, 24 h URL expiry rule. Running it needs a metered ARK_API_KEY and the owner already has a subscription video service. Catalog overlap: video-generation tool evaluation skills." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.)", + "holder": "not named", + "license_kind": "Apache-2.0 full text (same blob as entries 6 and 20)", + "not_covered": [ + "ByteDance/Volcengine terms", + "seedance.py", + "Feishu API terms" + ], + "notice_bytes": 11357, + "notice_git_blob": "7a4a3ea2424c09fbe48d455aed1eaa94d9124835", + "notice_path": "skills/jackycser/seedance-video-generation/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "licensor" + ], + "reader_scope_shorthand_at_intake": "default" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:360a9cdcdd317ac2751dbbd68af1b1f7a79130387c949bbbe2f389ada1f7a7b6", + "masked_value_count": 0, + "name": "seedance-video", + "negative_candidate": "Personal identifier left in a sample document; macOS-only commands.", + "package_tree_fingerprint": "acccc1f7133f8165fa33800f9f5daa91bc869b0805178e764f6b0a060cc8a689", + "path": "skills/jackycser/seedance-video-generation/SKILL.md", + "positive_candidate": "Rules block: check the key first, show the task id, download immediately (24 h expiry), poll every 15 s.", + "reader_original_row": 9, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "A key stored in env/secret-store is still an AI API key. No future client or call is authorized by this report; useful non-API concepts require an allowed route and current primary verification.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "9443d160ea1dd32c816805c485249b008f2fad32c4490f7fbee491834525b658", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/jackycser/seedance-video-generation/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 873, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "7dd7e76f23be099d42f7b331793b43867b8a5463", + "masked_value_count": 0, + "path": "skills/jackycser/seedance-video-generation/CHANGELOG.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "bec88f6746c76e5a1435669af544c70216ff7f50b13439007d777f6e6de67b05", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 11357, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "7a4a3ea2424c09fbe48d455aed1eaa94d9124835", + "masked_value_count": 0, + "path": "skills/jackycser/seedance-video-generation/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 659, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "1cee428af0ec00d857396a58628301a6e34d2e1c", + "masked_value_count": 0, + "path": "skills/jackycser/seedance-video-generation/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "e0de2a41de59750e85d86a867ea44ea4956f8c85604fc1f817d17f73beccb0ef", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 4977, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "66bf024a87c218f3277f276b2aff8d939adfaa43", + "masked_value_count": 0, + "path": "skills/jackycser/seedance-video-generation/how_to_send_video_via_feishu_app.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "9164d7b52691a4de901d2b5d51bf8a6f07f9f007b9cae1c1d2365a2e0fdc2fbe", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "f0169586450d0a05a1eadde3fd9eaf09e99b7e8c", + "masked_value_count": 0, + "path": "skills/jackycser/seedance-video-generation/seedance.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + } + ], + "use": "Generate videos with ByteDance Seedance through the Volcengine Ark API (text/image-to-video, first/last frame, reference images, draft mode, polling, download) via seedance.py or raw curl.", + "value": "Reference value: precise model/parameter table, draft-then-final cost saver, return_last_frame chaining, 24 h URL expiry rule. Running it needs a metered ARK_API_KEY and the owner already has a subscription video service. Catalog overlap: video-generation tool evaluation skills." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 9390, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "Step 4 says wait for user confirmation and never start on your own, which conflicts with the owner's no-approval-wait rule.", + "No testing or verification step anywhere (0 matches for test/verify/validate).", + "Claude-Code tool names (Glob, TodoWrite, mcp__context7__*) and leftover examples from an unrelated audio/WebSocket/PySide6 project." + ], + "git_blob": "5defe8b6654b6fae90d625e45925e3c7c47d742b", + "historical_reader_proposal": { + "candidate_disposition": "reference_only_no_copy", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 10, + "reader_reference_namespace": "3601", + "reason": "Approval gate and missing verification; thin over what the owner already uses.", + "required_changes": [ + "If adopted: confirm only for owner-only decisions, add a Red/Green + acceptance-test step, neutral tool wording, shorter templates." + ], + "todo": 3601, + "use": "Scenario-based change workflow: simple edit, bug, complex change, refactor; the complex path is 5 steps (understand, analyse, plan, confirm, execute) with output templates.", + "value": "Low to moderate: scenario triage, cause-before-fix rule, a 'what not to change' plan section. Catalog overlap: debugging, spec/test-driven and triage skills by purpose." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.); a redistribution would need the full Apache text", + "holder": "'dachengzionly' (2024)", + "license_kind": "Apache-2.0 short header only (no full licence text)", + "not_covered": [ + "full licence text", + "material from the unrelated project" + ], + "notice_bytes": 627, + "notice_git_blob": "529de795bb14eff336b790ab1c94f9c69f6ac219", + "notice_path": "skills/liancheng-zcy/feature-modification-workflow/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "081afee3a23ae8afbc2dcbe422486873d1644d95187961a1e23d3734fc0eb2f7", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "registry owner liancheng-zcy vs dachengzionly" + ], + "reader_scope_shorthand_at_intake": "default; a redistribution would need the full Apache text" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:ac2127d087582d4950fb7ddd4768361f741fb7f381e12802a45c763d25e0ddd1", + "masked_value_count": 0, + "name": "feature-modification-workflow", + "negative_candidate": "Mandatory approval gate and heavy templates for every complex change.", + "package_tree_fingerprint": "a3a2c3c574e67669ab4b454b03356fa8a1fe22144f673056521f5ca50571baa5", + "path": "skills/liancheng-zcy/feature-modification-workflow/SKILL.md", + "positive_candidate": "Scenario table with simple-vs-complex bug criteria and a 'what not to change' plan section.", + "reader_original_row": 10, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "Keep required owner-only questions and real technical constraints. No general implementation-confirmation gate; add meaningful acceptance/verification and preserve Apache notice requirements if any copying is later accepted.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "ced0cd0b1ec4ef6ffbc3bbcb5da06f9a931a0731766d1a184f8d90e3df4502fa", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/liancheng-zcy/feature-modification-workflow/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 627, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "529de795bb14eff336b790ab1c94f9c69f6ac219", + "masked_value_count": 0, + "path": "skills/liancheng-zcy/feature-modification-workflow/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "081afee3a23ae8afbc2dcbe422486873d1644d95187961a1e23d3734fc0eb2f7", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 317, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "e0ac289a15d89f75018c10998feab3568f758e21", + "masked_value_count": 0, + "path": "skills/liancheng-zcy/feature-modification-workflow/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "bb141b6d4b4daad7ad6d394897f2169aa059dd490d04e0ca261f36c0446616f7", + "workflow_read_by": null, + "workflow_read_complete": true + } + ], + "use": "Scenario-based change workflow: simple edit, bug, complex change, refactor; the complex path is 5 steps (understand, analyse, plan, confirm, execute) with output templates.", + "value": "Low to moderate: scenario triage, cause-before-fix rule, a 'what not to change' plan section. Catalog overlap: debugging, spec/test-driven and triage skills by purpose." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 7744, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "Doc/file drift: docs say config.example and format_message_v2.jq, shipped as .txt.", + "config.example.txt contains a personal Telegram chat id (not reproduced); install.sh and all backup scripts are unsaved; the installer edits crontab.", + "Absolute /root paths, persona 'Zoidbot', placeholder README image." + ], + "git_blob": "611a835ec3c7a0b6670e966803ed8596abdd1545", + "historical_reader_proposal": { + "candidate_disposition": "reference_only_no_copy", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 11, + "reader_reference_namespace": "3601", + "reason": "Platform-specific; the backup scripts are unsaved.", + "required_changes": [ + "If wanted for Codex: Go reader for rollout logs, Windows paths, no Telegram." + ], + "todo": 3601, + "use": "Clawdbot-only hourly incremental backup of session JSONL into an Obsidian vault as chat-style callouts using jq, plus token-usage warnings via Telegram.", + "value": "Low here (Clawdbot session format, /root paths, cron). Reusable: incremental snapshot by line count and timestamp, and the jq callout formatter. Catalog overlap: Obsidian authoring skills exist, no conversation backup." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.)", + "holder": "Laserducktales", + "license_kind": "MIT", + "not_covered": [ + "unsaved scripts", + "Clawdbot" + ], + "notice_bytes": 1071, + "notice_git_blob": "fde5dccb84b301642e5051386129b48a76186ef0", + "notice_path": "skills/laserducktales/obsidian-conversation-backup/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "32e9dc474395609503e2fef1f8a451995a5bded670f5cebbf6c2f15a617c1b02", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "registry owner laserducktales = holder (same name)" + ], + "reader_scope_shorthand_at_intake": "default" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:650e751cac5c661287b62885e37fe7882764e052bf91c6cd2bf73dcab94fe43a", + "masked_value_count": 0, + "name": "obsidian-conversation-backup", + "negative_candidate": "Fragile tracking files under /root; personal id left in a sample config.", + "package_tree_fingerprint": "01b0e66efa706738fd48eab6da6fd6448628f346fc30ba3a1336d96a26f0b720", + "path": "skills/laserducktales/obsidian-conversation-backup/SKILL.md", + "positive_candidate": "Incremental snapshot plus hourly breakdown; the jq formatter handles multi-paragraph text and skips system messages.", + "reader_original_row": 11, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "No implicit Telegram destination or private-log/vault access. Normal authorized messages remain allowed. Use a qualified explicit source/vault and current log format; no original installer execution.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "6a6d89cee920328af439d7392aad8fe0e66a40d44798efea38f372f22cb7ac9c", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/laserducktales/obsidian-conversation-backup/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 1071, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "fde5dccb84b301642e5051386129b48a76186ef0", + "masked_value_count": 0, + "path": "skills/laserducktales/obsidian-conversation-backup/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "32e9dc474395609503e2fef1f8a451995a5bded670f5cebbf6c2f15a617c1b02", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 1612, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "7e49eede33db124dff2b9003bd716a12cbcd153f", + "masked_value_count": 0, + "path": "skills/laserducktales/obsidian-conversation-backup/README.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "867838e3eab7304e4e6682a00f14ab324518203a5193312663bc8333cfbb205d", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 323, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "3841c0abfbe292a3390f14790f0d42f6ecd2442d", + "masked_value_count": 0, + "path": "skills/laserducktales/obsidian-conversation-backup/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "52668a72f130655c54bd2eb2f6669c9defbd05b9dfeb5a1a4becf43c167da230", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 576, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "d22c3cd4d69a64206f1e4e63550ae44fafe9c1f9", + "masked_value_count": 0, + "path": "skills/laserducktales/obsidian-conversation-backup/config.example.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "3bff1aadab93e64ab55f95a6783adc08a7d2d19ed4e7076364899121971d7696", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "9a0c53effed1cf815bacc61619f49fa22334a141", + "masked_value_count": 0, + "path": "skills/laserducktales/obsidian-conversation-backup/install.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "35b0a63619bdb34b58a1b9c8ca59d63d5f246815", + "masked_value_count": 0, + "path": "skills/laserducktales/obsidian-conversation-backup/scripts/create_hourly_snapshots.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 1241, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "3cca5cf871495f560f31bb7c2f5f5d109c456c78", + "masked_value_count": 0, + "path": "skills/laserducktales/obsidian-conversation-backup/scripts/format_message_v2.jq.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "52e448d732b7866f83d97af72d9f451d73f6c1db28f45bfa33d33b4cf3ab86a2", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "f63128923967e0336a5e61b96856ff36505b93f4", + "masked_value_count": 0, + "path": "skills/laserducktales/obsidian-conversation-backup/scripts/monitor_and_save.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "1d9e19aef55858a928c4b027786f59a8205cebaa", + "masked_value_count": 0, + "path": "skills/laserducktales/obsidian-conversation-backup/scripts/save_full_snapshot.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + } + ], + "use": "Clawdbot-only hourly incremental backup of session JSONL into an Obsidian vault as chat-style callouts using jq, plus token-usage warnings via Telegram.", + "value": "Low here (Clawdbot session format, /root paths, cron). Reusable: incremental snapshot by line count and timestamp, and the jq callout formatter. Catalog overlap: Obsidian authoring skills exist, no conversation backup." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 5545, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "Claims exceed code: only per-file read plus row/column counts (no merge/compare/chart/report function); test_output shows raw text dumps.", + "The dependencies line installs matplotlib that is never imported; PyMuPDF is AGPL/commercial licensed (background knowledge, not stated in the package; matters only if bundled).", + "rglob over the whole folder, whole-file reads, no size limits; test_data/regional_sales.csv unsaved. 'Local processing, no data uploaded' matches the code shown." + ], + "git_blob": "ed8611ed8af9045a816afe52b8ab27c628bc77ae", + "historical_reader_proposal": { + "candidate_disposition": "not_adoptable_as_is", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 12, + "reader_reference_namespace": "3601", + "reason": "Feature list the code does not deliver, plus Python dependencies and duplicated capability.", + "required_changes": [ + "None; if needed, build in Go on top of the existing document and spreadsheet skills." + ], + "todo": 3601, + "use": "Folder scanner for xlsx/csv/docx/pdf/txt/md using pandas, openpyxl, python-docx and PyMuPDF; returns counts and extracted text.", + "value": "Low: the advertised statistics, merge, charts and report generation are not in the shown code. Catalog overlap: spreadsheet, docx and pdf skills." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.); byte-identical with entry 17", + "holder": "not named ('Copyright 2026')", + "license_kind": "MIT-0 (heading reads 'MIT No Permission')", + "not_covered": [ + "dependency licences" + ], + "notice_bytes": 901, + "notice_git_blob": "447ec3c38d76907dcf7a87f3eba60dd7691a63dc", + "notice_path": "skills/tobewin/data-analyzer/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "e17c2ebfc6fd181e3a81514592e597ac7c753c3494ea40482ae7e21c3c3322df", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "holder identity" + ], + "reader_scope_shorthand_at_intake": "default; byte-identical with entry 17" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:8ea32f4a7bab1b99d56ca2fac3aecae3af3e4f1c62405f1787d47bb773795353", + "masked_value_count": 0, + "name": "data-analyzer", + "negative_candidate": "Feature list the code does not deliver; unused dependency.", + "package_tree_fingerprint": "49f1ec00718424fe901bc284adbc56dd2a5839a16b6ade816410052f855c29b3", + "path": "skills/tobewin/data-analyzer/SKILL.md", + "positive_candidate": "Extension-dispatch pattern and the explicit no-upload statement.", + "reader_original_row": 12, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "Distributed Python is permitted when authorized; new helpers default Go. PyMuPDF licensing is unverified background knowledge here, not a new GPL ban or accepted dependency grant.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "ade0d584cb5c411a68ee7444fc09f380ce17dc1c548a21343446fd2030f459b3", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/tobewin/data-analyzer/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 901, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "447ec3c38d76907dcf7a87f3eba60dd7691a63dc", + "masked_value_count": 0, + "path": "skills/tobewin/data-analyzer/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "e17c2ebfc6fd181e3a81514592e597ac7c753c3494ea40482ae7e21c3c3322df", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 457, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "5c356b596dada5de2d0f50f49f723614a11efd0f", + "masked_value_count": 0, + "path": "skills/tobewin/data-analyzer/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "e8e3d472b3147b48da043adef05bc312184e31329de3d29f1301b41f7347d0c9", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 342, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "e2e94f6f83d33cf3ba7cfde898a6161ea9abf8ac", + "masked_value_count": 0, + "path": "skills/tobewin/data-analyzer/test_data/meeting_notes.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "b344d1ac09e413b63546b235ab5c3198c726793f0f7a87296fb267479871c624", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 536, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "e898ade8bdd19525e94b8964e336bd893668f15b", + "masked_value_count": 0, + "path": "skills/tobewin/data-analyzer/test_data/project_report.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "f323cd516a0c5d37dee74e1710f91f9285d4f55635539d8e5c0965d68f2e49c8", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "111df722c4afdbdeafd5eb0f17df173b47f11794", + "masked_value_count": 0, + "path": "skills/tobewin/data-analyzer/test_data/regional_sales.csv", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 4285, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "c96a3db8e72f09ebe267a6bc7b5ab8763b085401", + "masked_value_count": 0, + "path": "skills/tobewin/data-analyzer/test_output/detailed_report.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "01589671552574de3c0b8721e6cc31ed899f0cbe7b2024c3e8bac4d635a4f968", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 2001, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "11bcd991c084caa00b3f81401f23be6347a2f51c", + "masked_value_count": 0, + "path": "skills/tobewin/data-analyzer/test_output/final_report.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "e9e00d81643c87eb4535c2f6e9649c310bdbff554cfa6fa5108415da1c3a51d6", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 627, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "5eca983db33b320694ed91c982254d9ebd904f8a", + "masked_value_count": 0, + "path": "skills/tobewin/data-analyzer/test_output/unified_report.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "db3d19a42897c033d86d4ab88df5c22ab1823bc51f40e5a22b70302d6bcf26d2", + "workflow_read_by": null, + "workflow_read_complete": true + } + ], + "use": "Folder scanner for xlsx/csv/docx/pdf/txt/md using pandas, openpyxl, python-docx and PyMuPDF; returns counts and extracted text.", + "value": "Low: the advertised statistics, merge, charts and report generation are not in the shown code. Catalog overlap: spreadsheet, docx and pdf skills." + }, + { + "actual_existing_comparison": "Public-source normalized procedural body is exactly the already-adopted canonical8735B according to skills-3080-body-alias-scan.json. Raw frontmatter and supports remain to be compared; no central target body was read and no final duplicate decision is inferred.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 9328, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "Display name 'test' and slug test-11, but the content is a complete mcp-builder; the probable upstream is a widely redistributed vendor skill (inference only).", + "Recommends TypeScript or Python SDKs; the owner's language policy is Go by default, Rust for GoDD, no new Python.", + "scripts/evaluation.py and connections.py need anthropic>=0.39.0 and mcp>=1.1.0: the evaluation harness calls the Anthropic API with a key (conflicts with the owner rule); scripts unsaved.", + "References (scanned): evaluation.md is line-identical to entry 20's (modulo CRLF); mcp_best_practices.md is 7.6 KB vs 28.9 KB in entry 20; node/python guides share 89%/99% of lines. Relies on run-time WebFetch of modelcontextprotocol.io and GitHub READMEs." + ], + "git_blob": "db8151c61d0d869bb93f46a11070cd4b7caa7bf9", + "historical_reader_proposal": { + "candidate_disposition": "adopt_candidate_with_changes", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 13, + "reader_reference_namespace": "3601", + "reason": "Valuable but probably overlapping; the delta must be isolated and the language and API-key conflicts removed.", + "required_changes": [ + "Diff against the in-use equivalent first and take only the delta (outputSchema/structuredContent, annotations, stateless HTTP, evaluation method).", + "Replace the TS/Python guides with Go/Rust notes; re-implement the evaluation runner without API keys or run it manually.", + "Keep the Apache-2.0 text, record modifications, note upstream attribution as unconfirmed." + ], + "todo": 3601, + "use": "Four-phase guide to building MCP servers: research/plan, implement (naming, schemas, annotations, outputSchema/structuredContent), review/test (MCP Inspector), evaluation (10 read-only QA pairs in XML).", + "value": "High as a concept source for MCP products: tool naming, actionable errors, pagination, annotations, stateless Streamable HTTP, evaluation-driven development. The newer of the two copies in this batch. Catalog overlap: a same-name, same-purpose entry exists in the startup catalog (public metadata); the parent must diff bodies to isolate the real delta." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.); frontmatter says 'license: Complete terms in LICENSE.txt'", + "holder": "not named (template placeholders)", + "license_kind": "Apache-2.0 full text (CRLF endings, leading blank line; equal to canonical 261eeb9e after whitespace normalisation)", + "not_covered": [ + "uploader's authorship", + "MCP SDK licences" + ], + "notice_bytes": 11558, + "notice_git_blob": "9b5e4019df618fc47d429529c369f4903142669b", + "notice_path": "skills/jarrett817/test-11/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "49bbe9114e49214df2ccc324cb3ac8d1d1aa1c3a0947f94c286765e86647b32e", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "actual licensor", + "whether the uploader holds rights", + "upstream attribution" + ], + "reader_scope_shorthand_at_intake": "default; frontmatter says 'license: Complete terms in LICENSE.txt'" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:c619834fa98a6aa7f3e0fd750f679c28c3889e0e77c9fba499ef12dab832fe44", + "masked_value_count": 0, + "name": "mcp-builder", + "negative_candidate": "Python harness bound to a metered SDK; language bias.", + "package_tree_fingerprint": "ac03bb9deb7b640ad71e24f65b21c7c3db49c6d1aaf96efa580296412debc0d1", + "path": "skills/jarrett817/test-11/SKILL.md", + "positive_candidate": "Evaluation method: 10 independent, read-only, verifiable, stable questions.", + "reader_original_row": 13, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "Compare fixed public canonical procedure/support first. Publication labels do not establish an upgrade. No API-key harness, new SDK/software rights, or broad central-body access is granted.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "57231330040e18e033dad8b2fdc0340a6185034c32b42b7d3448f444a6af6cf2", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/jarrett817/test-11/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 11558, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "9b5e4019df618fc47d429529c369f4903142669b", + "masked_value_count": 0, + "path": "skills/jarrett817/test-11/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "49bbe9114e49214df2ccc324cb3ac8d1d1aa1c3a0947f94c286765e86647b32e", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 267, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "6332685ddda3366047d1dc3e0f77ac618c77c6ea", + "masked_value_count": 0, + "path": "skills/jarrett817/test-11/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "a4eecd29c75e69431f9e861d565d4ff4e6910bda97ba9344f8b94621ae5194af", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": true, + "bytes": 22264, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "eb94581b0dbfb853c9da0a9e7fa0d372acad725b", + "masked_value_count": 0, + "path": "skills/jarrett817/test-11/reference/evaluation.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "830d9a3a69c9d6d01b638ce3497e0a7680b1d422d318929181a101f7d3816983", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 7579, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "b2bdd43ac29c57400de118ee3c5d06e6a47de134", + "masked_value_count": 0, + "path": "skills/jarrett817/test-11/reference/mcp_best_practices.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "900b5c9ec725b594ea04270d27c33cc51a0c8e866f5cb7ad4f57fb48d3838380", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 29519, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "ed0c6f152da8704ec7b45290006b8a1f7c9603ee", + "masked_value_count": 0, + "path": "skills/jarrett817/test-11/reference/node_mcp_server.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "2157ec5b77d6a7f2f84884d81acd060126f969e01a8a780470c1d927c2dabd37", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 25817, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "09903a58ee205669ec9c1d76ac29efbec88f6651", + "masked_value_count": 0, + "path": "skills/jarrett817/test-11/reference/python_mcp_server.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "890a64d0949e5b40c639682cda46661311ab818fc03976884ce46f00e2eff462", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "cd996bf616c9442ff1a0ce2c2ff751d66afd70bb", + "masked_value_count": 0, + "path": "skills/jarrett817/test-11/scripts/connections.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "0d80890b7578e666615d1df1b25a2c8d5fcdfcdc", + "masked_value_count": 0, + "path": "skills/jarrett817/test-11/scripts/evaluation.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "f55727a4cce9553b8aabc7878d302c8e2d9fc709", + "masked_value_count": 0, + "path": "skills/jarrett817/test-11/scripts/example_evaluation.xml", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 31, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "2df7367ffa9da8d7ec997194d61ad75b9243eab4", + "masked_value_count": 0, + "path": "skills/jarrett817/test-11/scripts/requirements.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "f53f4d884919bbc75bc971f62d196c6f0a443eccf2539f534fd2b66e0618c49d", + "workflow_read_by": null, + "workflow_read_complete": true + } + ], + "use": "Four-phase guide to building MCP servers: research/plan, implement (naming, schemas, annotations, outputSchema/structuredContent), review/test (MCP Inspector), evaluation (10 read-only QA pairs in XML).", + "value": "MCP設計/構造化出力/注釈/評価手順に価値がある候補。既採用canonicalとの固定本文・支持の比較を終えるまで、版の優劣や追加差分の有用性は確定しない。" + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 6545, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "Identity mismatch: frontmatter author gregorybeyrouti, MIT holder 'Fliz', registry owner jb-fliz.", + "FLIZ_API_KEY (JWT) required; scripts take '--api-key' on the command line (leaks into history and process lists).", + "scripts/*.py and assets/examples (Python, Node, Flask, curl) unsaved; references scanned only. Useful warning: the API does not scrape URLs, full text must be supplied." + ], + "git_blob": "dd4c8ad298c5e31d591fc12842e933c15fbbf60f", + "historical_reader_proposal": { + "candidate_disposition": "conditional_service_specific", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 14, + "reader_reference_namespace": "3601", + "reason": "Vendor-specific; the execution path is an AI-video API key.", + "required_changes": [ + "If used: env-only key, Go sample, verify against Fliz primary docs, drop the Python/Flask examples." + ], + "todo": 3601, + "use": "Fliz REST API integration guide (create video from text, poll status, webhooks, translate, duplicate, voices/music) with enum references.", + "value": "Low unless Fliz is used; a clean API cookbook. Needs a Fliz account and credits. Catalog overlap: none for Fliz." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.)", + "holder": "Fliz (vendor), 2025", + "license_kind": "MIT", + "not_covered": [ + "Fliz service terms and pricing", + "unsaved examples" + ], + "notice_bytes": 1061, + "notice_git_blob": "36673e83ee282303c59295ad429e2f4e54148ab6", + "notice_path": "skills/jb-fliz/fliz-ai-video-generator/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "ccd5ace514a7ade37ad7d54af741034f8fdce2eab7bb688d34f241bc835a6f48", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "relation of author gregorybeyrouti and registry owner jb-fliz to the holder" + ], + "reader_scope_shorthand_at_intake": "default" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:6417db2e3f94064a439f1d7c254a899c4d0428b2056d1c212f126eea00156afc", + "masked_value_count": 0, + "name": "fliz-ai-video-generator", + "negative_candidate": "API key on the command line; vendor lock-in.", + "package_tree_fingerprint": "de259ace4bbfcb439d0dc4eaa22f3f113639d977130431081bf7f12075bcee18", + "path": "skills/jb-fliz/fliz-ai-video-generator/SKILL.md", + "positive_candidate": "Polling vs webhook patterns with explicit terminal and user_action states.", + "reader_original_row": 14, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "Env-only is not permission for an AI API key. No API execution/new credits. Preserve vendor-specific value as conditional reference rather than a universal owner question or final exclusion.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "dfc102a66144085d5b9190fa43b35e952aea59943119a82cff886a4377108266", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/jb-fliz/fliz-ai-video-generator/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 1061, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "36673e83ee282303c59295ad429e2f4e54148ab6", + "masked_value_count": 0, + "path": "skills/jb-fliz/fliz-ai-video-generator/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "ccd5ace514a7ade37ad7d54af741034f8fdce2eab7bb688d34f241bc835a6f48", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 3244, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "11c8cebdfad35fe87ed8c85fc160ade4675b641c", + "masked_value_count": 0, + "path": "skills/jb-fliz/fliz-ai-video-generator/README.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "cfefad49bb7792e70d85f18b5c3540fad6e9960626e465992344ade33e983dac", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 299, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "80d55c81d63febe300aa4a826b0a94f0c9a6880d", + "masked_value_count": 0, + "path": "skills/jb-fliz/fliz-ai-video-generator/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "a675e0155b3742018d91d8a451c96b7e00a8d42cf2d45642e51cd7c578ac9c0a", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "848afe18aafd9dd35552e4ac30890ebcfae79977", + "masked_value_count": 0, + "path": "skills/jb-fliz/fliz-ai-video-generator/assets/examples/curl_examples.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "c78fda50b9430cbbb31acaf3c2ab1793487251e8", + "masked_value_count": 0, + "path": "skills/jb-fliz/fliz-ai-video-generator/assets/examples/nodejs_client.js", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "75e6fb685a708feb6d07eee4f394b8a956530aed", + "masked_value_count": 0, + "path": "skills/jb-fliz/fliz-ai-video-generator/assets/examples/python_client.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "0cd6e54ac84189cfd6736debaaa6b9e5b2bd5b7d", + "masked_value_count": 0, + "path": "skills/jb-fliz/fliz-ai-video-generator/assets/examples/webhook_handler.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 5951, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "eae5d82acaa911f9d414e41e219ffec0bd9361fe", + "masked_value_count": 0, + "path": "skills/jb-fliz/fliz-ai-video-generator/references/api-reference.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "32006f92e67f18c5554771d765e7cc459f356155170cebf20ae0771070c85821", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 7275, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "aef52c1d270aeec6d286fbeba583b5f462a8b8c8", + "masked_value_count": 0, + "path": "skills/jb-fliz/fliz-ai-video-generator/references/enums-values.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "f2efc64b11ef68f87ecf47786e9c3c66a34b70eddba197f2c143cd52bdd7f1ee", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "511dd958c5ffcf9d73a3bcbf58b9c4a784971c5a", + "masked_value_count": 0, + "path": "skills/jb-fliz/fliz-ai-video-generator/scripts/create_video.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "270096a074ba9da79e047ead9375b956ff65efbe", + "masked_value_count": 0, + "path": "skills/jb-fliz/fliz-ai-video-generator/scripts/list_resources.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "a269eccbf59f72afa27e0372a7ea51683a3bf77b", + "masked_value_count": 0, + "path": "skills/jb-fliz/fliz-ai-video-generator/scripts/poll_status.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "ed6851899b4f487ad491c5316159cdf7ff6d7dec", + "masked_value_count": 0, + "path": "skills/jb-fliz/fliz-ai-video-generator/scripts/test_connection.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + } + ], + "use": "Fliz REST API integration guide (create video from text, poll status, webhooks, translate, duplicate, voices/music) with enum references.", + "value": "Low unless Fliz is used; a clean API cookbook. Needs a Fliz account and credits. Catalog overlap: none for Fliz." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 9265, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "Installer is 'curl -fsSL .../main/install.sh | bash' (unpinned remote code); all 10 scripts unsaved.", + "Contradictions in one file: the config sample says auto_push_enabled: true while the safety section says disabled by default; docs say only configured files are committed but the push flow is 'git add -A && git commit && git push'; the Security & Safety section is duplicated verbatim.", + "Troubleshooting recommends 'git reset --hard origin/main' and 'rm -rf' sequences." + ], + "git_blob": "d3e10343f19eec75b810cd76041595cd1f82a9eb", + "historical_reader_proposal": { + "candidate_disposition": "not_adoptable_as_is", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 15, + "reader_reference_namespace": "3601", + "reason": "Remote-code installer, blanket auto-push, self-contradicting safety text, unverifiable scripts.", + "required_changes": [ + "None recommended." + ], + "todo": 3601, + "use": "Sync OpenClaw workspace files (USER/MEMORY/SOUL, skills, memory) across machines through a private GitHub repo using symlinks, an inotify/fswatch daemon and 5-minute pulls.", + "value": "None for this PC: Linux/macOS only, and it pushes personal memory files to a remote repo automatically. Catalog overlap: git workflow skills only." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.)", + "holder": "not named ('Copyright (c) 2026')", + "license_kind": "MIT", + "not_covered": [ + "10 unsaved scripts", + "GitHub terms" + ], + "notice_bytes": 1056, + "notice_git_blob": "14fac913ccf80234b1848540089a3bbcb6e5283d", + "notice_path": "skills/regulusz/multi-device-sync-github/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "1126322e2cc8d165adc4c792eeb195717de2bcc7b39be1ce77959d78e87ef685", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "holder" + ], + "reader_scope_shorthand_at_intake": "default" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:aa2cde2b6fda4dc739263c7e5cb85386743246f08651c6da85a5e4e6c3efa60e", + "masked_value_count": 0, + "name": "multi-device-sync-github", + "negative_candidate": "curl|bash installer and add -A auto-push with contradicting safety text.", + "package_tree_fingerprint": "e50a05bfb569dc5d65d435ba6b0a9d3b045a297922daf0e755902d96ded38ce5", + "path": "skills/regulusz/multi-device-sync-github/SKILL.md", + "positive_candidate": "Device-prefixed file names to avoid merge conflicts; pause-on-conflict.", + "reader_original_row": 15, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "Never execute the unreviewed installer/auto-push/reset sequences. The small useful ideas can remain candidates; no blanket ban on Git synchronization is adopted.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "e4dc8dbc73babf69c28368cc34dae5206c2f085d8ed8b97069f317873a435413", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/regulusz/multi-device-sync-github/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "5bc514b0e4863f9baced68be1c40c36ed9885a29", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/.clawhub/origin.json", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 1056, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "14fac913ccf80234b1848540089a3bbcb6e5283d", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "1126322e2cc8d165adc4c792eeb195717de2bcc7b39be1ce77959d78e87ef685", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 2171, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "cd4c97a21b8b91bb5b4ff0db33c25de0fdeed905", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/README.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "ca364478570971b56e94c9e59ea283cbcbf08bfe44e52670cc88406bdc604b44", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 306, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "2055286c67e5da9be6bb486ec3312612767b5d37", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "733a52f8af285cea306207dcda5df09358c545123d5f0ab0ce5950b8898e6d7c", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "66e29c67a6d7746f1e5dadc8301568e4dc80d22f", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/install.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 4143, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "77a30e683e849f3f79e5971c5ca430cc54df95b3", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/references/troubleshooting.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "474e33bc83a08b203d3a51ac73efe7a7fecf8af7bb11379958665bb7977f97ec", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "a87b76853a6c171ed5efc1000b5ee83214b814e0", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/scripts/sync-daemon.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "8ab3d4c3e982cbf60ede85393350c9296ccc70ad", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/scripts/sync-init.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "c2607f893a2ad19f0ba0f0aef45be2ac40e2df27", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/scripts/sync-notify.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "e0e1996adf5a07fc83731ef6fe00ac7d7e8d9959", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/scripts/sync-now.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "899de9e53f9bff7007a7bf2dc48a6a4ea1172c04", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/scripts/sync-pull.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "d1238eace1d531fb7aeb1980a5da2b80159613de", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/scripts/sync-push.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "35fd07414be8df9aed22edd481ba6f1bf6d06502", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/scripts/sync-resolve.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "e9d98b3c6cbebbd365bfcf831533a9daabe57e35", + "masked_value_count": 0, + "path": "skills/regulusz/multi-device-sync-github/scripts/sync-status.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + } + ], + "use": "Sync OpenClaw workspace files (USER/MEMORY/SOUL, skills, memory) across machines through a private GitHub repo using symlinks, an inotify/fswatch daemon and 5-minute pulls.", + "value": "None for this PC: Linux/macOS only, and it pushes personal memory files to a remote repo automatically. Catalog overlap: git workflow skills only." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 8544, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "sudo setup.sh installs packages, writes cron and /usr/local/bin, generates a password file under /etc; all bin/*.sh, lib.sh, config.yaml, skill.json unsaved.", + "'100% offline' coexists with a daily ClawHub update check and Telegram. Version 1's customize.sh sent a workspace listing to a model (CHANGES-PLAN.md) and was rewritten locally in 2.x; prompts/blacklist.txt and whitelist.txt are leftovers marked for deletion but still shipped.", + "Ships internal Portuguese planning docs derived from a ClawHub security report; SETUP_GUIDE has the agent collect a Telegram bot token and chat id into plaintext config.yaml and suggests backing up ~/.ssh." + ], + "git_blob": "210c50a702779200e7447e94d8578a5940ceca0f", + "historical_reader_proposal": { + "candidate_disposition": "reference_only_no_copy", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 16, + "reader_reference_namespace": "3601", + "reason": "Privileged installer with many unseen scripts; platform mismatch.", + "required_changes": [ + "If adapted: Windows-appropriate snapshotting through a Go wrapper, user-level install only, secrets via a credential store." + ], + "todo": 3601, + "use": "'Time Clawshine': hourly encrypted restic snapshots of OpenClaw state (cron/systemd), disk guard, prune, restore-by-time, Telegram failure alerts, self-test.", + "value": "Moderate as a restore-workflow reference; not runnable here (root, Linux, apt, cron, OpenClaw paths). Catalog overlap: none for agent-state backup." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.)", + "holder": "marzliak", + "license_kind": "MIT (CRLF)", + "not_covered": [ + "restic and yq licences", + "10 unsaved scripts" + ], + "notice_bytes": 1086, + "notice_git_blob": "0faefa7fb8c55dfa1dc124b91d11f00e6f78c852", + "notice_path": "skills/marzliak/quick-backup-restore/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "152ff6b3b51acbae8d220f2ac81b1d0e31e5c8d1253721b8a1e7c3c71b994eb4", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "none notable (holder matches registry owner name)" + ], + "reader_scope_shorthand_at_intake": "default" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:f0e84d925b13f136d925841defdb1215f5a1bf59304e6e0315cc04f5d9e4a28c", + "masked_value_count": 0, + "name": "quick-backup-restore", + "negative_candidate": "Secrets collected in chat and stored in plaintext; system-wide install.", + "package_tree_fingerprint": "bbdb0ce130c5ff784a588cbda7caae229381c727deb7b874a28e6beabac8c61d", + "path": "skills/marzliak/quick-backup-restore/SKILL.md", + "positive_candidate": "Restore safety: dry-run first, restore to a temp target then move, confirm before a full restore, round-trip self-test, disk guard.", + "reader_original_row": 16, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "No universal user-level-only install rule: authorized admin work uses the existing broker. Restore operations follow the concrete authorized scope/backup, not generic repeated approval. The masked README scan is not a full read.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "76107eba406ccfad43f8368f4f7578bab9e35b80a76882f382711cf8d0c4f20e", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/marzliak/quick-backup-restore/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": false, + "body_saved": true, + "bytes": 7119, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "f143e6b3564320aaaab36b73abe0576661105f41", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/CHANGELOG.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "e3e40e10cc92a18e81e76771c8dc6d8395a6ab5bd4400efa28320e9694c4c2ac", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 6452, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "c00603fd2f7c0edad66706ccb79e0ba5084477bf", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/CHANGES-PLAN.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "57c654697f0c33ccb931effdf3c0393c5a0b2984a173ce5aeae1c67faa05c345", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 1086, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "0faefa7fb8c55dfa1dc124b91d11f00e6f78c852", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "152ff6b3b51acbae8d220f2ac81b1d0e31e5c8d1253721b8a1e7c3c71b994eb4", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": true, + "bytes": 7752, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "89d628fabd2704b06819b8909f3c45363fc2b0e0", + "masked_value_count": 1, + "path": "skills/marzliak/quick-backup-restore/README.md", + "read_by": null, + "reader_mask_note": "Reader limitation reports one false-positive redaction of a password_file path during this scan. It remains scan-only, not a raw/workflow full read.", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "7a9195ca28ab28a0e77199ff4b39b92a062463161a3908037342115c0dbaf754", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 4019, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "21ccee28eeb7d4e2f6380f6c01ba9d681bfe195a", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/SETUP_GUIDE.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "e9988a15a192a938b8c79adc9e3022797ef3aba31c382d1ae970dc6375d1840e", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 466, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "207da0415f9f0d98870a568e05f5e69bedf44c03", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "5f7bd356123615e86c1d4907b970b9094bd38c7a01d91b5c49658965aacb55e7", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "fdde1ff181d58ab84feff7a5165f84eca9e2a499", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/bin/backup.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "432cea0bab4ea1b000384f432508284c976f3065", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/bin/customize.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "692fa5436c49b29e71f3230dde7b6a382a29317c", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/bin/prune.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "0713fd0b48c49794739a422ce6559405688bba94", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/bin/restore.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "033158db827cf05b79f21da1a8f9f1bdb2aeed2c", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/bin/setup.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "ca68992df457ab728e3c19c0a9427ac605ffa0f9", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/bin/status.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "5833b1df0f26d52091697f2a0ac4c565f5e4e083", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/bin/test.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "eb60f3fd85feab4731647d7d167c8d34701ab997", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/config.yaml", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "33cdf26932d8857b65742ad63ec24085d91db320", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/lib.sh", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 1113, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "b75cb09ba71c605ea867d65c00ed5c8c60aa5df0", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/prompts/blacklist.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "ac7ee3302ea47197b80b24477daf0f08ef761c981ca7ed9733dff8abfc85c7f7", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 1054, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "43892fcd47a13510bb776fc13cad78bb8cfe71f3", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/prompts/whitelist.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "9e26c07fbb758ffddb2f8fd8ba865f5a11d1bdf5efe3f90e430e83d37163ef32", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": true, + "bytes": 6260, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "3b24ce900883e13c5d1c5c09c24121c4f0a5d16c", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/quick-backup-restore-changes.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "e7a72a806e2b552d71ca510f21537df522f432594b0c0cb9975b6b92e284eeac", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "6332a8722eccc11393ba8697b4f03fbed5ea8083", + "masked_value_count": 0, + "path": "skills/marzliak/quick-backup-restore/skill.json", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + } + ], + "use": "'Time Clawshine': hourly encrypted restic snapshots of OpenClaw state (cron/systemd), disk guard, prune, restore-by-time, Telegram failure alerts, self-test.", + "value": "Moderate as a restore-workflow reference; not runnable here (root, Linux, apt, cron, OpenClaw paths). Catalog overlap: none for agent-state backup." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 8775, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "Heavy false positives: any URL, any $VAR, any open( counts as high; the score saturates at 100 after five hits.", + "Scans only .md/.py/.js/.ts: misses .sh/.ps1/.json/.yaml, hidden Unicode, base64 payloads, install hooks; bare 'except:'.", + "Declares 'pip install watchdog', which the code never uses; inline Python." + ], + "git_blob": "aedd8cacf117b153cca4ab69f44fcdf41d2cab74", + "historical_reader_proposal": { + "candidate_disposition": "reference_only_no_copy", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 17, + "reader_reference_namespace": "3601", + "reason": "Weak detection logic.", + "required_changes": [ + "If wanted: a Go scanner with explicit rule sets, hidden-Unicode and archive checks, per-file output; pair with the entry 18 workflow." + ], + "todo": 3601, + "use": "Regex-based static scan of skill folders for network/file/process/env patterns with a 0-100 risk score and a text report.", + "value": "The concept fits intake of unvetted skills (the source repo itself warns of malicious skills), but the implementation cannot discriminate. Catalog overlap: pre-use safety evaluation and security review skills by purpose." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.)", + "holder": "not named", + "license_kind": "MIT-0 (same text as entry 12)", + "not_covered": [ + "inline code authorship" + ], + "notice_bytes": 901, + "notice_git_blob": "447ec3c38d76907dcf7a87f3eba60dd7691a63dc", + "notice_path": "skills/tobewin/data-leak-detector/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "e17c2ebfc6fd181e3a81514592e597ac7c753c3494ea40482ae7e21c3c3322df", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "holder" + ], + "reader_scope_shorthand_at_intake": "default" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:6fd92181ff5bba1dd7b05d1e569c89bd6ef5b3d8b69ff645f50fcccf1fcb4aec", + "masked_value_count": 0, + "name": "data-leak-detector", + "negative_candidate": "A score that cannot separate safe from unsafe; an unused dependency.", + "package_tree_fingerprint": "9c2506dd65f2f23101566eadaed5c8694fb4bef78eade7462956f16636a7db73", + "path": "skills/tobewin/data-leak-detector/SKILL.md", + "positive_candidate": "Category taxonomy (network/file/process/env) and an honest 'static analysis only' statement.", + "reader_original_row": 17, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "Risk-pattern scores and URL/env matches are not proof of behavior or safety. Do not copy weak detection as a validator or treat every keyword as a final exclusion.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "bcf32bac2568f66bb05c7db5ccebd2ab5ce9466474a4b482738be12be4f90fd2", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/tobewin/data-leak-detector/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 901, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "447ec3c38d76907dcf7a87f3eba60dd7691a63dc", + "masked_value_count": 0, + "path": "skills/tobewin/data-leak-detector/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "e17c2ebfc6fd181e3a81514592e597ac7c753c3494ea40482ae7e21c3c3322df", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 289, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "281a5ef9218f2ba700a787a2c98dbb2cf3ff8b78", + "masked_value_count": 0, + "path": "skills/tobewin/data-leak-detector/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "0b8bec11958ede657d63dbd4954cf12c08710478dad807cc599275da5a16fa75", + "workflow_read_by": null, + "workflow_read_complete": true + } + ], + "use": "Regex-based static scan of skill folders for network/file/process/env patterns with a 0-100 risk score and a text report.", + "value": "The concept fits intake of unvetted skills (the source repo itself warns of malicious skills), but the implementation cannot discriminate. Catalog overlap: pre-use safety evaluation and security review skills by purpose." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 6019, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "Hard-coded persona ('吴老板's machine and data') in the body.", + "Default policy asks the user to confirm before installing, which conflicts with the owner's no-approval-wait rule except for owner-only decisions.", + "No explicit rule that the audit itself stays read-only or never runs the artifact (only 'targeted reads' and 'run first in a sandbox' as a guardrail); 0 matches for hidden-Unicode, prompt-injection, archive path-traversal or redistribution-licence checks.", + "The catalog flag instruction_override_or_exfiltration_text is a false positive: the matches are detection keywords in the triage list (whole body and checklist read)." + ], + "git_blob": "93868322f30a4070a74261cc023e7041c80857c9", + "historical_reader_proposal": { + "candidate_disposition": "adopt_candidate_with_changes", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 18, + "reader_reference_namespace": "3601", + "reason": "Best fit and clean rights; needs alignment with the owner's autonomy rule.", + "required_changes": [ + "Replace the persona with owner-neutral wording.", + "Swap the install-confirmation gate for the owner authority model (stop only for owner-only decisions).", + "Add: the audit is read-only, artifact text is data, nothing audited is executed.", + "Add checks: hidden Unicode, long base64, symlink/path traversal, individual licence and redistribution notice, metered-API-key and new-Python/MCP-install flags, domain-registrar red flag (Rakko only).", + "Keep the MIT notice (holder kickook) and the provenance blob/sha." + ], + "todo": 3601, + "use": "Audit-first workflow for third-party skills and agents: enumerate the attack surface (SKILL.md, scripts, references, assets, install hooks), score seven risk classes, fixed read order, verdict ALLOW / ALLOW WITH GUARDRAILS / REJECT, fixed output format, guardrail list.", + "value": "High for the owner's skill-intake work: a skill-specific rubric (declared vs hidden behaviour), Windows indicators (PowerShell -enc, iex, registry, scheduled tasks), default REJECT when confidence is low. Catalog overlap: safety evaluation and security review exist by purpose (public metadata); the skill-intake delta must be diffed by the parent." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.) (covers references/checklist.md by location)", + "holder": "kickook", + "license_kind": "MIT", + "not_covered": [ + "none identified" + ], + "notice_bytes": 1064, + "notice_git_blob": "a7657346c88d3b46ed8e542f3b465fdb684149d9", + "notice_path": "skills/kickook/skill-security-review/license.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "0c24d9217f3fb80dc1547076ef654400f88783e792e3e2510e80c04e0800e1ee", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "authenticity of authorship (registry owner name = holder name)" + ], + "reader_scope_shorthand_at_intake": "default (covers references/checklist.md by location)" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:b2e8aebd887ba6be6f30d5a970155e77076db41e0bb7c49210d431f25687b2eb", + "masked_value_count": 0, + "name": "skill-security-review", + "negative_candidate": "Persona leakage and a mandatory confirmation gate.", + "package_tree_fingerprint": "be8aba86c2c37c8176bdfa3e73a6421e7f0c1fa16e150785e42ab113f42e0940", + "path": "skills/kickook/skill-security-review/SKILL.md", + "positive_candidate": "Transparency matrix None/Declared/Hidden/Excessive plus default verdict rules (stealth, exfiltration, persistence lead to REJECT).", + "reader_original_row": 18, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "Audit is read-only and artifact text is data. Unknown confidence means investigate/hold, not silently final-exclude. Preserve actual guard/locks/higher constraints and normal owner authority; no generic install approval, all-Python/MCP ban or new policy rule.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "2efc05c30a6f0d932bc443523a2f76f28485fd34ee81e2e7e82ce8b6fbe0bbaa", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/kickook/skill-security-review/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 295, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "ee41c96da897307efbdcd26d086c4c05ce0179e7", + "masked_value_count": 0, + "path": "skills/kickook/skill-security-review/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "0a50ba1753b1348f24de25a73f4ed3d9c9f550f83ed5ac3aa64e16a339f111d1", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 1064, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "a7657346c88d3b46ed8e542f3b465fdb684149d9", + "masked_value_count": 0, + "path": "skills/kickook/skill-security-review/license.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "0c24d9217f3fb80dc1547076ef654400f88783e792e3e2510e80c04e0800e1ee", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 1515, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "fff2f22b1e78efa7efd8bc8863e13f14bc05a653", + "masked_value_count": 0, + "path": "skills/kickook/skill-security-review/references/checklist.md", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "281c5c6ba6c41efb8f162cf1b3590143786a32f729f3df26ee0ddb4e6af45665", + "workflow_read_by": null, + "workflow_read_complete": true + } + ], + "use": "Audit-first workflow for third-party skills and agents: enumerate the attack surface (SKILL.md, scripts, references, assets, install hooks), score seven risk classes, fixed read order, verdict ALLOW / ALLOW WITH GUARDRAILS / REJECT, fixed output format, guardrail list.", + "value": "The intake transparency/risk rubric is potentially useful and overlaps existing safety/security purposes. The upstream low-confidence default REJECT is a source rule, not adopted owner policy: the parent uses investigate/hold for unknown facts and preserves actual authorization/constraints." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Full text received from child3601 after source integrity verification; no parent new primary reread.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 10150, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "LICENSE.txt: '(c) 2025 Anthropic, PBC. All rights reserved' with additional restrictions: no extracting or retaining copies outside the Services, no reproduction, no derivative works, no distribution/sublicense/transfer, no reverse engineering; possession conveys no licence.", + "Frontmatter says 'Proprietary. LICENSE.txt has complete terms'; the root MIT and any registry-wide MIT-0 statement cannot override this file-level notice.", + "16 files unsaved (11 .py, 5 .xml); Linux apt-get dependency list. The 'read entire file' steps point to docx-js.md (16.5 KB) and ooxml.md (23.6 KB), scanned by outline only and not reproduced." + ], + "git_blob": "664663895bcd11b88a632301d830b313cbabb845", + "historical_reader_proposal": { + "candidate_disposition": "copy_not_possible", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 19, + "reader_reference_namespace": "3601", + "reason": "The individual notice prohibits the copy.", + "required_changes": [ + "None; do not copy, redistribute or adapt." + ], + "todo": 3601, + "use": "DOCX create/edit/redline workflow: pandoc extraction, docx-js for new files, a Python OOXML Document library (unpack/pack/validate) for tracked changes, batch redlining, DOCX to PDF to JPEG check.", + "value": "High content value but unusable: the notice forbids copying and derivatives, and the owner already has docx capability (public catalog metadata)." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "'these materials (all code, prompts, assets, files and other components of this Skill)'", + "holder": "Anthropic, PBC (2025)", + "license_kind": "Proprietary (all rights reserved; copy, derivative and distribution prohibited)", + "not_covered": [ + "any grant to third parties" + ], + "notice_bytes": 1467, + "notice_git_blob": "c55ab42224874608473643de0a85736b7fec0730", + "notice_path": "skills/kidaiangel/document-docx/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "79f6d8f5b427252fa3b1c11ecdbdb6bf610b944f7530b4de78f770f38741cfaa", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "uploader kidaiangel's permission", + "authenticity of the copy" + ] + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:741cc025c76afb1abd990520f1cc34337bd14258cd765a44ee3bc43a6256abc2", + "masked_value_count": 0, + "name": "docx", + "negative_candidate": "Third-party redistribution of a proprietary skill.", + "package_tree_fingerprint": "5a097917d1857eed552054f11bd0e9c6c8516a746fe34471ce475f1da0de959a", + "path": "skills/kidaiangel/document-docx/SKILL.md", + "positive_candidate": "Redlining principle: mark only changed runs, batches of 3-10 changes, verify with a pandoc diff.", + "reader_original_row": 19, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "The fixed individual notice restricts copying/derivatives; root MIT and OAuth subscription are not a substitute. No copied primary/helper or new final exclusion is performed by this intake.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "0bd90681fcab2e282025ee14acf508b60bbd6c41ac6c3bf83c0dc14d52c37933", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/kidaiangel/document-docx/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 1467, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "c55ab42224874608473643de0a85736b7fec0730", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "79f6d8f5b427252fa3b1c11ecdbdb6bf610b944f7530b4de78f770f38741cfaa", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 273, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "8c3f312d9eb3fd3eb61605b48c9b910ea9aec606", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "eb4ae9cd30b60fa452c33126783f08ff7da707d3d95059d3e1fe8e9ac8d03159", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": true, + "bytes": 16509, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "c6d7b2ddd642ea97ca7fd8acb187b1db6fe5ebd9", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/docx-js.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "83b4a2f88d058a10509fbc0b3b12b6933c407805f4d4afc955cd3fb939c16428", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 23572, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "7677e7b83694e9667c07606b15bb75bfd8acce0f", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/ooxml.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "a16f922797eeaa3670ea31c1e49d15b799613d03f39445c857a5dd3221aa3597", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "68bc0886f6ef74e6e1d3fe6da0d6a296858a42d8", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/ooxml/scripts/pack.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "4938798813e52daf03ab859f3c2faeece7f3aeea", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/ooxml/scripts/unpack.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "508c5891faba622051a8d5566c118de7892d95bf", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/ooxml/scripts/validate.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "db092ece7e21de98f87bd81471578259a1bc642f", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/ooxml/scripts/validation/__init__.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "0681b199c2f0539763eb115596acd82ca9c53bf3", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/ooxml/scripts/validation/base.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "602c47087ada8d5a10e90abc864f1225abcb2345", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/ooxml/scripts/validation/docx.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "66d5b1e2dba6d1b3dbcb290fa6ef1699980435e6", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/ooxml/scripts/validation/pptx.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "7ed425edf5336306b9eec87164e034d87decebb8", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/ooxml/scripts/validation/redlining.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "bf9c56272f9c7a372e6581127d292728ccea046d", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/scripts/__init__.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "ae9328ddf3a15802bd6b669b3b28e5cfbc1186d3", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/scripts/document.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "b5dace0ef98998ba6ba55b781ef9c549c11b5f97", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/scripts/templates/comments.xml", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "b4cf23e356918d30f4bbd3ed3ee7a47c1ab5c13d", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/scripts/templates/commentsExtended.xml", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "e32a05e0c3ce9419b48c0ee121daa195070797b4", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/scripts/templates/commentsExtensible.xml", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "d04bc8e06dfd7370d39c29d10c7c968d17860d43", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/scripts/templates/commentsIds.xml", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "a839cafeb3e5e7af2d6ee5c4f0ca71112e004041", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/scripts/templates/people.xml", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "d92dae611d442cdfd498b2271a8221f98837be0a", + "masked_value_count": 0, + "path": "skills/kidaiangel/document-docx/scripts/utilities.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + } + ], + "use": "DOCX create/edit/redline workflow: pandoc extraction, docx-js for new files, a Python OOXML Document library (unpack/pack/validate) for tracked changes, batch redlining, DOCX to PDF to JPEG check.", + "value": "High content value but unusable: the notice forbids copying and derivatives, and the owner already has docx capability (public catalog metadata)." + }, + { + "actual_existing_comparison": "Public active metadata only; no guarded central body read, package duplicate or new version established.", + "body_read_by": "20261024-152713-todo-3601", + "body_read_complete": true, + "body_read_method": "Child reports complete line-diff against fully read entry13; original note retained. Raw masking0; parent has not independently semantically reread the entire primary.", + "body_workflow_read_by": null, + "body_workflow_read_complete": true, + "bytes": 13552, + "candidate_disposition": "assessed_pending_parent_final_disposition", + "commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "excluded_by_todo3080": false, + "findings": [ + "Reference-file similarity and size differences were reported by the reader; equality of selected guide text is not whole-package equality or chronological proof.", + "Unretrieved scripts reference SDK requirements; no API-key runner was executed.", + "This variant includes llms-full.txt references and different transport guidance. PublishedAt/length/version alone do not establish an older/newer relation." + ], + "git_blob": "c9ef8a261f80e0c37dc73300ce90679e946c4407", + "historical_reader_proposal": { + "candidate_disposition": "duplicate_older_revision", + "not_final_disposition": true, + "not_owner_policy": true, + "reader_original_row": 20, + "reader_reference_namespace": "3601", + "reason": "Superseded by entry 13; only three deltas are worth carrying.", + "required_changes": [ + "If the deltas are taken, apply the same conditions as entry 13." + ], + "todo": 3601, + "use": "Older revision of the same MCP-server building guide as entry 13: agent-centric design principles, four phases, a long best-practices guide, an evaluation guide.", + "value": "Duplicate of entry 13 in purpose and older (2026-02-01 vs 2026-04-02). Unique deltas: the agent-centric principle list, response-size truncation guidance (25,000 tokens), and the rule that MCP servers are long-running so tests go through a harness, tmux or timeout to avoid hanging the main process.", + "findings": [ + "Reference files: evaluation.md line-identical to entry 13 (modulo CRLF), python guide 99%, node guide 89%, mcp_best_practices 57% shared (older 28.9 KB vs 7.6 KB).", + "Same Python scripts with anthropic and mcp SDK requirements (unsaved).", + "Older transport advice (llms-full.txt fetch) than entry 13." + ], + "negative_candidate": "Redundant duplicate of a newer revision in the same batch." + }, + "independent_review_complete": false, + "individual_rights_review": { + "copy_license_accepted": false, + "definition": "Received individual notice reading is not a blanket grant; root MIT and service subscriptions do not substitute for candidate-specific permission.", + "historical_reader_scope": "(the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.); frontmatter 'license: Complete terms in LICENSE.txt'", + "holder": "not named", + "license_kind": "Apache-2.0 full text (same blob as entries 6 and 9)", + "not_covered": [ + "uploader's authorship" + ], + "notice_bytes": 11357, + "notice_git_blob": "7a4a3ea2424c09fbe48d455aed1eaa94d9124835", + "notice_path": "skills/seanphan/mcp-builder/LICENSE.txt", + "notice_read_by": "20261024-152713-todo-3601", + "notice_read_complete": true, + "notice_sha256": "58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd", + "third_party_support_or_service_rights_accepted": false, + "unconfirmed": [ + "licensor", + "upstream attribution" + ], + "reader_scope_shorthand_at_intake": "default; frontmatter 'license: Complete terms in LICENSE.txt'" + }, + "installed_by_todo3080": false, + "integrated_by_todo3080": false, + "inventory_id": "github:657d2700cf98280c119d603868b8a93c47c6c2dd2b4952291a1c6242f3152bac", + "masked_value_count": 0, + "name": "mcp-builder", + "negative_candidate": "Treating an archive variant as superseded or redundant solely from its name/date/version, without comparing the fixed procedure and supports.", + "package_tree_fingerprint": "cb3f36e66ddd3c8d267d480f4e9245fa01224b3061229eb540fac792f02a5a7e", + "path": "skills/seanphan/mcp-builder/SKILL.md", + "positive_candidate": "Test-safety rule for long-running servers; response-size truncation guidance.", + "reader_original_row": 20, + "reader_reference_namespace": "3601", + "reason": "意味/権利/限界の評価を受領し固定本文・notice・支持集合を照合した。未保存や修正、実比較、個別copy許諾と最終採否は別に確認する。", + "repo": "6mile/skills", + "required_changes": "Treat as another archive variant with documented differences, not a proven superseded/exact duplicate on version/date alone. Compare canonical body/support before a disposition; preserve any genuinely useful distinct procedure.", + "source_code_executed": false, + "source_commit": "920714f17d81e0a95c7a9bc51faf0a7921cd982d", + "source_sha256": "b1010e90adcb8fd6bf57640df34ab6454fbf7e4216e150a4620f7caccadc4e63", + "source_url": "https://github.com/6mile/skills/blob/920714f17d81e0a95c7a9bc51faf0a7921cd982d/skills/seanphan/mcp-builder/SKILL.md", + "support_path_blob_inventory_complete": true, + "supporting_resources": [ + { + "body_read": true, + "body_saved": true, + "bytes": 11357, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "7a4a3ea2424c09fbe48d455aed1eaa94d9124835", + "masked_value_count": 0, + "path": "skills/seanphan/mcp-builder/LICENSE.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": true, + "body_saved": true, + "bytes": 276, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "23ecb7813a01965613b6a320f6e0e846e2312858", + "masked_value_count": 0, + "path": "skills/seanphan/mcp-builder/_meta.json", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "9dee4f4e80fe8dba1cd15be4e284ceee2c27a65ce8f2ddd7463c3343b1101d93", + "workflow_read_by": null, + "workflow_read_complete": true + }, + { + "body_read": false, + "body_saved": true, + "bytes": 21663, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "87e9bb78840fac113d93b4a27ab5b229a18cf226", + "masked_value_count": 0, + "path": "skills/seanphan/mcp-builder/reference/evaluation.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "8c99479f8a2d22a636c38e274537aac3610879e26f34e0709825077c4576f427", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 28910, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "db42af71270806d88f8ae9214a4ff7c5452150e8", + "masked_value_count": 0, + "path": "skills/seanphan/mcp-builder/reference/mcp_best_practices.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "3bdf013379bdd3c198baccd0f183441c710fc7cae07ba4c6f8f8048276519688", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 26709, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "e66a35bd665136bc87440ce3a810b7b901efe8f0", + "masked_value_count": 0, + "path": "skills/seanphan/mcp-builder/reference/node_mcp_server.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "40b03e9c07463d5db524c1f5140ef60713fdd911c2f4386f89e0b94d43b8764e", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": true, + "bytes": 26182, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "38fa3a10a78a56d763bfe65fff15d620ed000713", + "masked_value_count": 0, + "path": "skills/seanphan/mcp-builder/reference/python_mcp_server.md", + "read_by": null, + "reader_mask_note": "", + "scan_by": "20261024-152713-todo-3601", + "scan_only": true, + "source_sha256": "4e6db48188f44ff4eb707f50b8d273d5d18af4b88d326f7a26f03a405064bc0b", + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "ffcd0da3fbe1539320d022017ae83b61a9587a5c", + "masked_value_count": 0, + "path": "skills/seanphan/mcp-builder/scripts/connections.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "41778569c45a458e0eea839b8917692ad65be2d5", + "masked_value_count": 0, + "path": "skills/seanphan/mcp-builder/scripts/evaluation.py", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": false, + "body_saved": false, + "bytes": null, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "41e4459b5af861e61f1ca87d2f8f5ab5543dc054", + "masked_value_count": 0, + "path": "skills/seanphan/mcp-builder/scripts/example_evaluation.xml", + "read_by": null, + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": null, + "workflow_read_by": null, + "workflow_read_complete": false + }, + { + "body_read": true, + "body_saved": true, + "bytes": 29, + "definition": "Raw/full, scan-only and unsaved states are distinct. No helper semantic reread or upstream execution is inferred.", + "executed": false, + "git_blob": "e73e5d1e356edafadb9dc9243e6f300f2c5529b3", + "masked_value_count": 0, + "path": "skills/seanphan/mcp-builder/scripts/requirements.txt", + "read_by": "20261024-152713-todo-3601", + "reader_mask_note": "", + "scan_by": null, + "scan_only": false, + "source_sha256": "d5d7558b2368ecea9dfeed7d1fbc71ee9e0750bebd1282faa527d528a344c3c7", + "workflow_read_by": null, + "workflow_read_complete": true + } + ], + "use": "MCPサーバー設計手順の別archive variant。公開日の前後だけで既存canonicalや同batch13の新版・旧版・完全重複を確定しない。", + "value": "MCP設計手順の別variantとして、応答長・長寿命テスト・原則の違いを保持する候補。公開日と版番号だけでは新版/旧版/完全重複を確定しない。" + } + ], + "excluded": 0, + "fixed_verification": "next20-fixed-source-verification123649.json", + "installed": 0, + "integrated": 0, + "job": "20261024-123649-todo-3080", + "limitations": [ + "Evaluation only: nothing adopted, copied, executed or fetched. Decoding was done by an in-memory Node reader (no file writes). 81 unsaved script/config paths could not be read, so statements about them rest on SKILL.md/README text.", + "Secret masking is pattern-based: 0 replacements in the 20 bodies; 1 false-positive replacement in the scan of entry 16 README.md (a password_file path). Over all saved text: 0 hidden Unicode characters; injection-phrase hits only in entry 3 (the term 'system prompt'); pipe-to-shell hits in entry 15 (real installer) and entry 18 (detection keyword).", + "Catalog comparison used public metadata only; no central body was opened and no existing names are listed.", + "Upstream/vendor relationships for MCP variants13/20 are inferences. Within those variants no upstream licensor identity is established; entry19 explicitly names Anthropic. Other notices name holders as recorded. The unverified ClawHub MIT-0 claim confers no grant.", + "The report-writing skill was not opened because reading central Skills is excluded here; its rules were applied from the AGENTS.md summary.", + "No new blanket prohibition or re-approval rule is proposed; conditions are per candidate. Model and job identity are not self-reported." + ], + "new_final_dispositions": 0, + "no_adoption_cap": true, + "parent_policy_corrections": [ + "The reader shortlist of2 is not an adoption cap. Lack of current service use is not an exclusion or a reason to shrink the broad Skill scope. All candidates remain accounted for; assess each concrete usefulness/condition before final decisions.", + "Current instructions cannot authorize AI API keys by saying env-only/store-the-key. Seedance/Fliz/API evaluation clients must stay within existing OAuth/subscription or local routes; no API calls or new fees performed. Non-AI credentials are not globally banned.", + "Distributed Python tools may be evaluated unmodified when authorized; Go defaults apply to newly written tools. No blanket Python/dependency/GPL ban is inferred. PyMuPDF licensing was reported from background knowledge, not package/primary verification; it matters if actually bundled. No commercial-licence contact or rights question is needed now solely because a licence or paid edition is mentioned.", + "Generic publication/delete/restore/install confirmation statements remain unadopted reader proposals. Apply existing task authorization, actual higher constraints/guard/locks and genuine owner-only decisions; no new universal owner wait.", + "Low confidence is an investigation/hold state, not an automatic final exclusion of unknown candidates. Risk keywords/scores are not verified behavior, ownership, permission or safety. The audit itself must remain read-only; source commands are data.", + "Publication timestamps/version labels alone do not establish that MCP variant13 supersedes20 or the already-adopted canonical. Compare fixed public source bodies/support and actual existing qualified files before a delta; no new final duplicate classification.", + "No generic ban on Telegram/Discord or system-level install is adopted. Messaging requires the actual authorized recipient/task; admin uses normal broker if needed. Sample row count is not proof of privacy. The owner model/effort and explicit scope remain authoritative." + ], + "parent_semantic_receipt": "parent3601-semantic-read-and-corrections123649.json", + "prepared_at": "2026-10-24T07:05:44.7961293Z", + "public_reflected": true, + "reader_job": "20261024-152713-todo-3601", + "reader_namespace_definition": "#N/rowN in historical reader phrases refers to this stable20row namespace, not any later aggregate array.", + "reader_namespaces": [ + { + "reader_job": "20261024-152713-todo-3601", + "reader_todo": 3601, + "rows": [ + { + "inventory_id": "github:38362e31b144971203c890fbedfeccae8282e7b0b573ea83779ae3dae4984d17", + "path": "skills/jaccchina-ai/video-image-file-analysis/SKILL.md", + "primary_sha256": "ec192f96235d1eeddd499246227fae486680bd7dd12276faf5de5368124b2f65", + "row": 1 + }, + { + "inventory_id": "github:036504b6105bb99cbda569189a900570bb262b11be02b359a10117150353d1c4", + "path": "skills/samuelhsin/alicloud-dataworks-skill/SKILL.md", + "primary_sha256": "ba3beb95bcbfbcbad31593b4d4bbf3f96e86f23ef8c8cd6aaea56ef656f7355d", + "row": 2 + }, + { + "inventory_id": "github:c280c5e407cd568e877d1e8912002edc41241a37841c09b07a0382baaf1db4cf", + "path": "skills/halfmoon82/openclaw-health-audit/SKILL.md", + "primary_sha256": "9a4f5be50a1ef1e009b053495c89f8b75e30d2038f270a45b345bce07f3a2e07", + "row": 3 + }, + { + "inventory_id": "github:0ee55da8e673cd49cab72be0c2a1d972a985614bbd2a1625b738868437cf1bfc", + "path": "skills/byungkyu/google-calendar-api/SKILL.md", + "primary_sha256": "e71e1a4a0e7185827015f2314638f4fea53d449e84fbb8a4f116eb557eb512ed", + "row": 4 + }, + { + "inventory_id": "github:2e8756bce3b17473504f816523849b6932ef7decd678930a1a9428ecb444bdd7", + "path": "skills/cat-xierluo/clawhub-sync/SKILL.md", + "primary_sha256": "fcef1748fa340218c82873b3fa8329c96a8ed66e921f55b2440fb391f0d57cf1", + "row": 5 + }, + { + "inventory_id": "github:0025f397a753732d038547b64ff253703944590dadece4e5eb684211f0b1a343", + "path": "skills/jwu26/file-reader/SKILL.md", + "primary_sha256": "ceb975b53ca77ed573694afda13ff25f0bf63d52a27dd6d9da56940254c52e12", + "row": 6 + }, + { + "inventory_id": "github:e63e22076c3062ee0a0bb48a460ad322f515693a5a22a66d1f4f39aedc60f6b8", + "path": "skills/theshadowrose/csv-brain/SKILL.md", + "primary_sha256": "1a76399e19bf2f2ade7fec5f65d3487ff7a94a66218fed46ebb9cf08661122f6", + "row": 7 + }, + { + "inventory_id": "github:1beb1e150dc16b49d649ed55f886c18d7e5e2e9b22ac42731892384807cb58ff", + "path": "skills/iiamit/gomboc-security-community/SKILL.md", + "primary_sha256": "9344438ee48824b19e497cf81244d114a8df75100449d8079668e772c308ab22", + "row": 8 + }, + { + "inventory_id": "github:360a9cdcdd317ac2751dbbd68af1b1f7a79130387c949bbbe2f389ada1f7a7b6", + "path": "skills/jackycser/seedance-video-generation/SKILL.md", + "primary_sha256": "9443d160ea1dd32c816805c485249b008f2fad32c4490f7fbee491834525b658", + "row": 9 + }, + { + "inventory_id": "github:ac2127d087582d4950fb7ddd4768361f741fb7f381e12802a45c763d25e0ddd1", + "path": "skills/liancheng-zcy/feature-modification-workflow/SKILL.md", + "primary_sha256": "ced0cd0b1ec4ef6ffbc3bbcb5da06f9a931a0731766d1a184f8d90e3df4502fa", + "row": 10 + }, + { + "inventory_id": "github:650e751cac5c661287b62885e37fe7882764e052bf91c6cd2bf73dcab94fe43a", + "path": "skills/laserducktales/obsidian-conversation-backup/SKILL.md", + "primary_sha256": "6a6d89cee920328af439d7392aad8fe0e66a40d44798efea38f372f22cb7ac9c", + "row": 11 + }, + { + "inventory_id": "github:8ea32f4a7bab1b99d56ca2fac3aecae3af3e4f1c62405f1787d47bb773795353", + "path": "skills/tobewin/data-analyzer/SKILL.md", + "primary_sha256": "ade0d584cb5c411a68ee7444fc09f380ce17dc1c548a21343446fd2030f459b3", + "row": 12 + }, + { + "inventory_id": "github:c619834fa98a6aa7f3e0fd750f679c28c3889e0e77c9fba499ef12dab832fe44", + "path": "skills/jarrett817/test-11/SKILL.md", + "primary_sha256": "57231330040e18e033dad8b2fdc0340a6185034c32b42b7d3448f444a6af6cf2", + "row": 13 + }, + { + "inventory_id": "github:6417db2e3f94064a439f1d7c254a899c4d0428b2056d1c212f126eea00156afc", + "path": "skills/jb-fliz/fliz-ai-video-generator/SKILL.md", + "primary_sha256": "dfc102a66144085d5b9190fa43b35e952aea59943119a82cff886a4377108266", + "row": 14 + }, + { + "inventory_id": "github:aa2cde2b6fda4dc739263c7e5cb85386743246f08651c6da85a5e4e6c3efa60e", + "path": "skills/regulusz/multi-device-sync-github/SKILL.md", + "primary_sha256": "e4dc8dbc73babf69c28368cc34dae5206c2f085d8ed8b97069f317873a435413", + "row": 15 + }, + { + "inventory_id": "github:f0e84d925b13f136d925841defdb1215f5a1bf59304e6e0315cc04f5d9e4a28c", + "path": "skills/marzliak/quick-backup-restore/SKILL.md", + "primary_sha256": "76107eba406ccfad43f8368f4f7578bab9e35b80a76882f382711cf8d0c4f20e", + "row": 16 + }, + { + "inventory_id": "github:6fd92181ff5bba1dd7b05d1e569c89bd6ef5b3d8b69ff645f50fcccf1fcb4aec", + "path": "skills/tobewin/data-leak-detector/SKILL.md", + "primary_sha256": "bcf32bac2568f66bb05c7db5ccebd2ab5ce9466474a4b482738be12be4f90fd2", + "row": 17 + }, + { + "inventory_id": "github:b2e8aebd887ba6be6f30d5a970155e77076db41e0bb7c49210d431f25687b2eb", + "path": "skills/kickook/skill-security-review/SKILL.md", + "primary_sha256": "2efc05c30a6f0d932bc443523a2f76f28485fd34ee81e2e7e82ce8b6fbe0bbaa", + "row": 18 + }, + { + "inventory_id": "github:741cc025c76afb1abd990520f1cc34337bd14258cd765a44ee3bc43a6256abc2", + "path": "skills/kidaiangel/document-docx/SKILL.md", + "primary_sha256": "0bd90681fcab2e282025ee14acf508b60bbd6c41ac6c3bf83c0dc14d52c37933", + "row": 19 + }, + { + "inventory_id": "github:657d2700cf98280c119d603868b8a93c47c6c2dd2b4952291a1c6242f3152bac", + "path": "skills/seanphan/mcp-builder/SKILL.md", + "primary_sha256": "b1010e90adcb8fd6bf57640df34ab6454fbf7e4216e150a4620f7caccadc4e63", + "row": 20 + } + ] + } + ], + "reader_todo": 3601, + "roster_sha256": "d373c7e7ff97effa870bf95d2176bcb6cb9b68ad24399f9bed2546540e78d5f8", + "source": "6mile/skills", + "source_code_executed": false, + "source_report": "research3601-original123649.md", + "source_report_sha256": "e17250f2455014662e6c91ad9f00a365ff5cd59711b70b1193104d8fac748dd4", + "todo": 3080, + "tree_sha": "5782ae7deffe5024e15b6e090327385c10f76273", + "previous_normalization": "sixmile-next20-normalized123649.json", + "normalization_amendment": "Neutralized unsupported relative-newness/superseded claims in current value fields13/20; exact historical reader wording is preserved. Source hashes/reader actors/states and all three independent anchors unchanged. Public primary/workflow totals are now474/475 in the canonical progress index; this cohort is20 rawprimary paths and no new final decisions.", + "amended_at": "2026-10-24T08:58:26.6672769+00:00", + "reflection_definition": "This new20 cohort is now reflected in the public source index/progress. Its original private preparation notes are historical; no final adoption/exclusion, central operation or new source execution follows from reception.", + "definition_at_preparation": "Twenty newly received assessments with explicit raw/scan/unknown states and individual notice scopes. All received claims reconciled with fixed source metadata; helper is not a semantic primary reread. Parent read all20 evaluation/rights/examples/limits. Candidate proposals are not final adoption/exclusion or owner-policy changes. Current published454/455 is not incremented by this private normalization.", + "reader_scope_definitions": { + "default": "the notice sits in the package dir and, as written, covers 'the Software / this work'; no file list. The repo-root MIT is not extended to packages.", + "definition": "Original3601 scope shorthand expanded below as received interpretation, not a blanket copy grant. Each fixed individual notice and third-party condition remains separate." + }, + "reader_original_limitations": [ + "Evaluation only: nothing adopted, copied, executed or fetched. Decoding was done by an in-memory Node reader (no file writes). 81 unsaved script/config paths could not be read, so statements about them rest on SKILL.md/README text.", + "Secret masking is pattern-based: 0 replacements in the 20 bodies; 1 false-positive replacement in the scan of entry 16 README.md (a password_file path). Over all saved text: 0 hidden Unicode characters; injection-phrase hits only in entry 3 (the term 'system prompt'); pipe-to-shell hits in entry 15 (real installer) and entry 18 (detection keyword).", + "Catalog comparison used public metadata only; no central body was opened and no existing names are listed.", + "Upstream/vendor relationships for entries 13 and 20 are inferences. Only entry 19's notice names its holder explicitly. The statement that ClawHub forces MIT-0 appears only inside entry 5's text; it was not verified and is not used as a grant.", + "The report-writing skill was not opened because reading central Skills is excluded here; its rules were applied from the AGENTS.md summary.", + "No new blanket prohibition or re-approval rule is proposed; conditions are per candidate. Model and job identity are not self-reported." + ], + "receipt_reference_definition": "source_report/fixed_verification/parent_semantic_receipt/previous_normalization names identify private preserved parent records, not repository links. Fixed public upstream URLs, source identities, reader namespace and independent test anchors carry the public evidence scope." +} diff --git a/docs/skills-3080-sixmile-next45-evaluation.json b/docs/skills-3080-sixmile-next45-evaluation.json index d0d07997..443683c8 100644 --- a/docs/skills-3080-sixmile-next45-evaluation.json +++ b/docs/skills-3080-sixmile-next45-evaluation.json @@ -9745,14 +9745,31 @@ "content_review_todo": 3591, "bundle_sha256": "97e3d3b442e14a093f75bdeecd81e55d0ba17f13428f53f3806c8bc85a998bfb", "new_model_turn_tested": false, - "public_delta_review_pending": true, + "public_delta_review_pending": false, "fresh_metadata_enabled": true, "old_held_comparison_released": false, "actual_file_structure_hash_passed": true, "target": "rss-feed-generator", "real_site_or_renderer_executed": false, "evidence": "skills-3080-rss-season-installation-evidence.json", - "content_review_must": 0 + "content_review_must": 0, + "public_delta_acceptance": { + "accepted_head": "00c87391a57467ab3373316229d5ef33e8b8f361", + "merge": "36722b7b45f227b662843bb515b0e7aff766dba5", + "original_review": { + "todo": 3602, + "head": "50ab02f3420dbe0c34458708dd82adf482c0f763", + "base": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", + "must": 0 + }, + "pr": 430, + "correction_review": { + "todo": 3605, + "head": "00c87391a57467ab3373316229d5ef33e8b8f361", + "base": "50ab02f3420dbe0c34458708dd82adf482c0f763", + "must": 0 + } + } } }, { @@ -10465,9 +10482,9 @@ "Prd-only policy is not a Vercel/Railway-only hosting policy. Assess concrete purpose, fees and external-send scope. The AI API-key constraint does not categorically prohibit all non-AI credentials.", "Generic confirmation proposals for writes/merges/publication/MCP are limited by the actual target/task authorization and real higher constraints. No universal owner gate is added. New permanent MCP authority remains outside this task.", "The AI API route in the Seedance candidate must not run. Zyte terms/costs and ordinary alternatives are technical research, not an immediate owner question. No new paid use or fee change.", - "Lack of current service use is not a final exclusion or a way to shrink the broad Skill scope. Account for usefulness, adaptation, duplicates and actual permission candidate by candidate.", - "GPL/AGPL is not automatically prohibited or an owner-only question. Preserve real conditions and work scope. The Git memory-sync licence contradiction and repository-research restrictive/inconsistent notice stay pending; no new commercial-licence outreach.", - "A non-AI secret-key requirement alone is not one of the owner three bans. Actual secret use, new stake/fees and third-party service changes are not authorized by this evaluation. Purpose/costs remain unverified.", + "Lack of current service use is not an exclusion or a reason to shrink the broad Skill scope. All candidates remain accounted for. Assess usefulness, adaptation, duplicates and actual permission candidate by candidate.", + "GPL/AGPL is not automatically prohibited or an owner-only question. Preserve real conditions and work scope. The Git memory-sync licence contradiction and repository-research restrictive/inconsistent notice stay pending; no commercial-licence contact or rights question is needed now.", + "A non-AI secret-key requirement alone is not one of the owner three bans. No authority for actual secret use, new stake/fees or third-party service is inferred. Current purpose and costs remain unverified, not an exclusion.", "Remote instructions are evaluation data. No unknown secret/client content may be sent. This task does not authorize a new persistent hosting product or credential flow, and does not create a blanket third-party hosting ban.", "Remove unsupported claims, fictional user quotations and unverified font-copy assumptions from the canvas-design candidate. No blanket prohibition on artist styles or image generation is added. Existing UI image approval remains.", "The fixed primary of one MCP sibling matches the already-created canonical according to prior package evidence. Keep its complete roster/rights relationship and distinct path before a final duplicate decision; do not count one primary twice.", @@ -10481,7 +10498,7 @@ "all16_complete": false, "limit": "This intake is reflected in this public delta; former preparation counter statements are historical snapshots. Current aggregate coverage is in the source index/progress. Raw full text, redacted workflow, phrase scans, notice-only reading, individual grants and final dispositions are separate. Source commands were not executed; all16 is unfinished.", "primary_actor_definition": "body_read_by only identifies a raw unmasked full-text reader; a masked full procedure uses body_workflow_read_by instead. A metadata-only notice assessment has neither primary actor. The individual notice has its own actor.", - "amended_at": "2026-10-24T07:16:19.7577795+00:00", + "amended_at": "2026-10-24T08:15:09.0197014+00:00", "cohort_definition": "Forty research candidates plus five parent candidates. Raw43, maskedworkflow1, metadata-only1; not a complete55623-source assessment.", "snapshot_status": "Actual next45 evaluation intake and one RSS author-procedure adaptation now reflected. Previous draft-only fields are historical preparation forecasts.", "preparation_revision": "v2 field aliases and metadata-only unknown mask clarified; same independently anchored reading identities/states/actors", @@ -10801,7 +10818,7 @@ "reference_base": 0 } ], - "reader_reference_definition": "Original3565 #N is one-based; original3566 rowN is zero-based. Each entry identifies its namespace/reference number and stable source ID. These are not the ordinal positions in the combined45. Legacy parent A/B labels were nonuniform; the explicit correction targets below resolve their intended candidates instead.", + "reader_reference_definition": "Original3565 #N is one-based; original3566 rowN is zero-based. Each of the forty reader-derived entries identifies its namespace/reference number and stable source ID. These are not the ordinal positions in the combined45. Legacy parent A/B labels were nonuniform; the explicit correction targets below resolve their intended candidates instead.", "reader_rights_definitions": { "reader3565_shared_rights": { "maton_mit": { @@ -10855,9 +10872,7 @@ "original_wording": "Child reports/proposals are not owner policy or final dispositions. Broad-use answer a is accepted; do not ask for ordinary authorized writes/merge/publication in the same scope.", "resolved_wording": "Child reports/proposals are not owner policy or final dispositions. Broad-use answer a is accepted; ordinary authorized writes/merge/publication in the same scope do not require another owner question.", "correction_number": 1, - "inventory_ids": [ - null - ], + "inventory_ids": [], "scope": "All candidates as applicable; no source-row lookup is implied.", "legacy_labels_are_not_lookup_keys": true }, @@ -10865,9 +10880,7 @@ "original_wording": "Do not infer Vercel/Railway-only hosting from Prd-only policy. Assess concrete purpose, fees and external-send scope. AI API-key prohibition does not categorically prohibit all non-AI credentials.", "resolved_wording": "Prd-only policy is not a Vercel/Railway-only hosting policy. Assess concrete purpose, fees and external-send scope. The AI API-key constraint does not categorically prohibit all non-AI credentials.", "correction_number": 2, - "inventory_ids": [ - null - ], + "inventory_ids": [], "scope": "All candidates as applicable; no source-row lookup is implied.", "legacy_labels_are_not_lookup_keys": true }, @@ -10899,17 +10912,15 @@ }, { "original_wording": "No current service use is not an exclusion or a way to shrink broad Skill scope. Follow through on possible usefulness/adaptation/duplicates; all candidates remain accounted for.", - "resolved_wording": "Lack of current service use is not a final exclusion or a way to shrink the broad Skill scope. Account for usefulness, adaptation, duplicates and actual permission candidate by candidate.", + "resolved_wording": "Lack of current service use is not an exclusion or a reason to shrink the broad Skill scope. All candidates remain accounted for. Assess usefulness, adaptation, duplicates and actual permission candidate by candidate.", "correction_number": 5, - "inventory_ids": [ - null - ], + "inventory_ids": [], "scope": "All candidates as applicable; no source-row lookup is implied.", "legacy_labels_are_not_lookup_keys": true }, { "original_wording": "GPL/AGPL is not automatically prohibited or an owner-only question. Preserve conditions and actual work scope. A17 license contradiction and A8 restrictive/inconsistent notice stay held; no commercial-license contact or rights question now.", - "resolved_wording": "GPL/AGPL is not automatically prohibited or an owner-only question. Preserve real conditions and work scope. The Git memory-sync licence contradiction and repository-research restrictive/inconsistent notice stay pending; no new commercial-licence outreach.", + "resolved_wording": "GPL/AGPL is not automatically prohibited or an owner-only question. Preserve real conditions and work scope. The Git memory-sync licence contradiction and repository-research restrictive/inconsistent notice stay pending; no commercial-licence contact or rights question is needed now.", "correction_number": 6, "inventory_ids": [ "github:76eeba391a3a7fca4f6bde1c26a016041f16a187602f1f0fc8305999029f6ac1", @@ -10920,7 +10931,7 @@ }, { "original_wording": "B7 secret-key use itself is not one of the owner three bans. No authority for actual secret use, new stake/fees or third-party service is inferred. Current purpose and costs stay unverified, not a final exclusion.", - "resolved_wording": "A non-AI secret-key requirement alone is not one of the owner three bans. Actual secret use, new stake/fees and third-party service changes are not authorized by this evaluation. Purpose/costs remain unverified.", + "resolved_wording": "A non-AI secret-key requirement alone is not one of the owner three bans. No authority for actual secret use, new stake/fees or third-party service is inferred. Current purpose and costs remain unverified, not an exclusion.", "correction_number": 7, "inventory_ids": [ "github:75a3208c351614c00a56980cb49a93164fa7fd2b4b718d7581bb6a2b945531c4" @@ -10972,9 +10983,7 @@ "original_wording": "Nested SKILL.md read as support can also be an independent catalog primary. Reconcile identities before adding coverage.", "resolved_wording": "A nested SKILL.md read as support can also be an independent catalog primary. Reconcile stable identities before adding primary coverage.", "correction_number": 12, - "inventory_ids": [ - null - ], + "inventory_ids": [], "scope": "All candidates as applicable; no source-row lookup is implied.", "legacy_labels_are_not_lookup_keys": true }, @@ -10982,9 +10991,7 @@ "original_wording": "No original-archive deletion, new rights outreach or same/alternate held647 fetch. Unknown support bytes stay unknown. No source commands, permanent MCP connections or fees executed.", "resolved_wording": "No original-archive deletion, new rights outreach, repeated or alternate held647 retrieval. Unknown support bytes remain unknown. No source commands, permanent MCP connections or new fees were executed.", "correction_number": 13, - "inventory_ids": [ - null - ], + "inventory_ids": [], "scope": "All candidates as applicable; no source-row lookup is implied.", "legacy_labels_are_not_lookup_keys": true } diff --git a/docs/skills-3080-sixmile-partial-evaluation.json b/docs/skills-3080-sixmile-partial-evaluation.json index d92dd155..d4621252 100644 --- a/docs/skills-3080-sixmile-partial-evaluation.json +++ b/docs/skills-3080-sixmile-partial-evaluation.json @@ -4,7 +4,7 @@ "entrypoints_fulltext_read": 21, "tree_sha": "5782ae7deffe5024e15b6e090327385c10f76273", "installed": 1, - "pending_definition": "This evidence artifact selects the first21 of the fixed55623 source paths. Its nonselected55602 is a cohort boundary, not current full-source unread coverage. Additional45 is separately indexed; current raw64/workflow65/notice-only1 is in the source evaluation index.", + "pending_definition": "This immutable first21 evidence cohort has a historical nonselected boundary, not current unread coverage. Current raw/workflow/notice-only and unassessed totals are in skills-3080-sixmile-evaluation-index.json and skills-3080-progress.json; no current aggregate numbers are copied into this historical prose.", "entrypoints_unread": 55602, "entrypoints_expected": 55623, "pending_paths_list_published": false, @@ -3287,13 +3287,21 @@ ], "evidence": "skills-3080-mcp-pointer-installation-evidence.json", "public_delta_acceptance": { - "head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", - "review_todos": [ - 3590, - 3599 - ], + "accepted_head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", "merge": "0801af4a04d9fb15b2772a5336f84f66ca2fd175", - "pr": 428 + "original_review": { + "todo": 3590, + "head": "ebb023f2b04f4551037fd5bf746819466e96a4b4", + "base": "6905b890d7b280c659e2073c6b561c903c1ed955", + "must": 1 + }, + "pr": 428, + "correction_review": { + "todo": 3599, + "head": "bca16b76c51b68223f84a31aaa9a960ca15f5787", + "base": "ebb023f2b04f4551037fd5bf746819466e96a4b4", + "must": 0 + } } } }, @@ -4057,9 +4065,9 @@ "central_writes": 0 }, "next21_definition": "Earlier eleven plus research3554 ten unique primary paths. Support102+63=165, saved40+35=75, full12+30=42, scan0+5=5, unsaved62+28=90. Metadata eligibility is not individual permission. No new adoption or exclusion is added.", - "amended_at": "2026-10-24T07:16:19.7577795+00:00", + "amended_at": "2026-10-24T08:58:26.6672769+00:00", "amendment_job": "20261024-123649-todo-3080", - "amendment_definition": "Document amendment time only. Historical first21 reading/adoption snapshots and identities are preserved. This followup incorporates3590/3599 scope explanations and an additional45 aggregate-index link; it is not a new reading of the historical21.", + "amendment_definition": "Document amendment and historical-scope clarification only. Original first21/source/support/actor anchors remain unchanged. Current aggregate counts live only in the source index/progress; later batches do not require rewriting historical numeric prose.", "next_research_todos": [ 3565, 3566 diff --git a/docs/skills-3080-spec.md b/docs/skills-3080-spec.md index ba67236a..856b3d1c 100644 --- a/docs/skills-3080-spec.md +++ b/docs/skills-3080-spec.md @@ -273,3 +273,7 @@ MCP設計と距離ごとのカーソル軌跡を、固定V2のreview3564/3569( [RSS生成・季節切替の受入記録](skills-3080-rss-season-acceptance.md)、[固定2設計](skills-3080-rss-season-designs.json)、[配置と発見の証拠](skills-3080-rss-season-installation-evidence.json)、[6mileの読取索引](skills-3080-sixmile-evaluation-index.json)を対応付ける。全体の最新採否は[台帳](skills-3080-adoptions.json)、読取の現在値と受入履歴は[進行記録](skills-3080-progress.json)へ集約する。 3602は固定0801af4a..50ab02f3の24差分と45評価の意味を読み、Must0/Suggestion6/Nit6を返した。原応答7150B/SHAdc124ce210d9203473be211682b4817a7daca7e2f6bd5ff08c92e886b0a6ff09を親が保存・全文読了し、job/nativeのSonnet5.5/maxを照合。422支持は状態/指紋の機械照合で、全支持の意味や全16資料の受入ではない。この補正は、公開する個別許諾の説明と出典行の対応、受入済みと未了の表示、時刻/保持対象/負例の確認を整える。原文・notice・Skill bundle・配置fileと既存の読取件数/最終採否は変更しない。この補正時点の新headに対するreview/CI/mergeは、以後の履歴で別に確認する。 + +## 2026-10-24 追加20評価と機械照合 + +[追加20件の受入範囲](skills-3080-next20-acceptance.md)から、本文・個別notice・支持の読取と、保存本文の機械照合を分けて辿れる。現在の値は進行記録と台帳へ集約し、この節に全体の可変件数を複写しない。 diff --git a/tools/skills-3080-catalog/sixmile_additional_evaluation_test.go b/tools/skills-3080-catalog/sixmile_additional_evaluation_test.go index da38af9b..54d3a1b4 100644 --- a/tools/skills-3080-catalog/sixmile_additional_evaluation_test.go +++ b/tools/skills-3080-catalog/sixmile_additional_evaluation_test.go @@ -14,6 +14,24 @@ import ( const extra45Bodies = "d41a412c5b6e0f6d38004a09ef57611fb917379afbb3bc31039e06c100ce0e9c" const extra45Supports = "f928e93fb320780912880304bae59c4ad704a6f5c5579e381ce25df07cf06e38" const extra45PrimaryActors = "d61534da6c644463e66fdebc4f6badd821c9fb889bfa0a9ed8f9ff4012f35bc7" +const next20Bodies = "c6a69b6cc0771ae23c52085772addb8d937b1a1567001e374cdaaa83407f8ecf" +const next20Supports = "77d8f6f7322344c81b3a9b430d2fdde8e82d82a682dddbe3c97a578d7340918f" +const next20PrimaryActors = "c7651ac3298c91b98ba06f186b50022e238afc23ee9ec780d4d3a9083a487de4" + +type receivedReadingSpec struct { + Label, Bodies, Supports, Actors string + Candidates, Raw, Workflow, Masked, Metadata int + Support, Saved, Read, WorkflowSupport, MaskedSupport, Scan, Unsaved int +} + +var extra45ReadingSpec = receivedReadingSpec{ + "extra45", extra45Bodies, extra45Supports, extra45PrimaryActors, + 45, 43, 44, 1, 1, 422, 246, 126, 149, 23, 85, 176, +} +var next20ReadingSpec = receivedReadingSpec{ + "next20", next20Bodies, next20Supports, next20PrimaryActors, + 20, 20, 20, 0, 0, 178, 97, 74, 74, 0, 23, 81, +} // These anchors preserve the private normalization after the independent // fixed-tree/index/catalog/raw-object checks, not digests derived from the @@ -111,15 +129,20 @@ func x45Digest(rows []string) string { } func validateExtra45Reading(a extra45Assessment) error { - if a.Source != "6mile/skills" || a.Commit != "920714f17d81e0a95c7a9bc51faf0a7921cd982d" || a.Tree != "5782ae7deffe5024e15b6e090327385c10f76273" || len(a.Entries) != 45 { - return errors.New("extra45 reading: fixed cohort identity differs") + return validateReceivedReading(a, extra45ReadingSpec) +} + +func validateReceivedReading(a extra45Assessment, expected receivedReadingSpec) error { + bad := func(message string) error { return errors.New(expected.Label + " reading: " + message) } + if a.Source != "6mile/skills" || a.Commit != "920714f17d81e0a95c7a9bc51faf0a7921cd982d" || a.Tree != "5782ae7deffe5024e15b6e090327385c10f76273" || len(a.Entries) != expected.Candidates { + return bad("fixed cohort identity differs") } ids, paths, supportPaths := map[string]bool{}, map[string]bool{}, map[string]bool{} var bodyRows, actorRows, supportRows []string raw, workflow, masked, metadata, notices, support, saved, read, workflowSupport, maskedSupport, scan, unsaved := 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 for _, e := range a.Entries { if e.ID == "" || ids[e.ID] || paths[e.Path] || !strings.HasPrefix(e.Path, "skills/") || path.Clean(e.Path) != e.Path || strings.ContainsAny(e.Path, "\\:") || !strings.HasSuffix(e.Path, "/SKILL.md") || !x45Hex(e.SHA, 64) || !x45Hex(e.Blob, 40) || e.Bytes < 1 || e.Commit != a.Commit || e.URL != "https://github.com/"+a.Source+"/blob/"+a.Commit+"/"+e.Path || e.Name == "" || e.Use == "" || e.Reason == "" || e.Read == nil || e.Workflow == nil || !x45False(e.Executed) { - return errors.New("extra45 reading: primary identity/state is absent or conflated") + return bad("primary identity/state is absent or conflated") } ids[e.ID], paths[e.Path] = true, true full, wf := *e.Read, *e.Workflow @@ -127,32 +150,32 @@ func validateExtra45Reading(a extra45Assessment) error { switch { case full: if !wf || e.Mask == nil || *e.Mask != 0 || x45String(e.ReadBy) == "" || e.WorkflowBy != nil { - return errors.New("extra45 reading: raw primary acquired masking or lost its reader") + return bad("raw primary acquired masking or lost its reader") } raw++ workflow++ actor = *e.ReadBy case wf: if e.Mask == nil || *e.Mask < 1 || e.ReadBy != nil || x45String(e.WorkflowBy) == "" { - return errors.New("extra45 reading: masked workflow primary was claimed as raw or lost its actor") + return bad("masked workflow primary was claimed as raw or lost its actor") } workflow++ masked++ actor = *e.WorkflowBy default: if e.ReadBy != nil || e.WorkflowBy != nil || e.Mask != nil { - return errors.New("extra45 reading: metadata-only primary acquired a text reading claim") + return bad("metadata-only primary acquired a text reading claim") } metadata++ } r := e.Rights if !x45True(r.Read) || x45String(r.ReadBy) == "" || r.Kind == "" || r.Copy == nil || !x45False(r.Support) || !strings.HasPrefix(r.Path, path.Dir(e.Path)+"/") || !x45Hex(r.SHA, 64) || !x45Hex(r.Blob, 40) || r.Bytes < 1 { - return errors.New("extra45 reading: individual notice reading or rights scope is missing") + return bad("individual notice reading or rights scope is missing") } if actor == "" { actor = *r.ReadBy } else if *r.ReadBy != actor { - return errors.New("extra45 reading: notice actor differs from this received reading cohort") + return bad("notice actor differs from this received reading cohort") } notices++ bodyRows = append(bodyRows, fmt.Sprintf("%s\t%s\t%s\t%s\t%d\t%t\t%t\n", e.Path, e.ID, e.SHA, e.Blob, e.Bytes, full, wf)) @@ -160,48 +183,48 @@ func validateExtra45Reading(a extra45Assessment) error { noticeMatches := 0 for _, s := range e.Support { if !strings.HasPrefix(s.Path, path.Dir(e.Path)+"/") || s.Path == e.Path || supportPaths[s.Path] || !x45Hex(s.Blob, 40) || s.Saved == nil || s.Read == nil || s.Workflow == nil || s.Scan == nil || s.Mask == nil || *s.Mask < 0 || !x45False(s.Executed) { - return errors.New("extra45 reading: support identity or explicit state is missing") + return bad("support identity or explicit state is missing") } supportPaths[s.Path] = true support++ stored, fullSupport, wfSupport, scanned := *s.Saved, *s.Read, *s.Workflow, *s.Scan if stored { if s.Bytes == nil || *s.Bytes < 1 || !x45Hex(s.SHA, 64) { - return errors.New("extra45 reading: saved support identity is incomplete") + return bad("saved support identity is incomplete") } saved++ } else { if s.Bytes != nil || s.SHA != "" || fullSupport || wfSupport || scanned || *s.Mask != 0 { - return errors.New("extra45 reading: unknown support bytes or reading were invented") + return bad("unknown support bytes or reading were invented") } unsaved++ } switch { case fullSupport: if !wfSupport || scanned || *s.Mask != 0 || x45String(s.ReadBy) != actor || s.WorkflowBy != nil || s.ScanBy != nil { - return errors.New("extra45 reading: raw support acquired masking/scanning or a wrong reader") + return bad("raw support acquired masking/scanning or a wrong reader") } read++ workflowSupport++ case wfSupport: if !stored || scanned || *s.Mask < 1 || s.ReadBy != nil || x45String(s.WorkflowBy) != actor || s.ScanBy != nil { - return errors.New("extra45 reading: masked workflow support was claimed as raw or lost its actor") + return bad("masked workflow support was claimed as raw or lost its actor") } workflowSupport++ maskedSupport++ case scanned: if !stored || s.ReadBy != nil || s.WorkflowBy != nil || x45String(s.ScanBy) != actor { - return errors.New("extra45 reading: scan-only support acquired a full reader") + return bad("scan-only support acquired a full reader") } scan++ default: if *s.Mask != 0 || s.ReadBy != nil || s.WorkflowBy != nil || s.ScanBy != nil { - return errors.New("extra45 reading: unread support acquired a reader/scanner") + return bad("unread support acquired a reader/scanner") } } if s.Path == r.Path { if !stored || !fullSupport || s.SHA != r.SHA || s.Blob != r.Blob || s.Bytes == nil || *s.Bytes != r.Bytes { - return errors.New("extra45 reading: notice does not match its independently verified package support") + return bad("notice does not match its independently verified package support") } noticeMatches++ } @@ -212,15 +235,15 @@ func validateExtra45Reading(a extra45Assessment) error { supportRows = append(supportRows, fmt.Sprintf("%s\t%s\t%s\t%s\t%t\t%t\t%t\t%d\t%t\t%s\t%s\t%s\n", s.Path, s.Blob, size, s.SHA, stored, fullSupport, wfSupport, *s.Mask, scanned, x45String(s.ReadBy), x45String(s.WorkflowBy), x45String(s.ScanBy))) } if noticeMatches != 1 { - return errors.New("extra45 reading: individual notice missing or repeated") + return bad("individual notice missing or repeated") } } c := a.Counts - if raw != 43 || workflow != 44 || masked != 1 || metadata != 1 || notices != 45 || support != 422 || saved != 246 || read != 126 || workflowSupport != 149 || maskedSupport != 23 || scan != 85 || unsaved != 176 || c.Candidates != 45 || c.Raw != raw || c.Workflow != workflow || c.Masked != masked || c.Metadata != metadata || c.Notices != notices || c.Support != support || c.Saved != saved || c.Read != read || c.WorkflowSupport != workflowSupport || c.MaskedSupport != maskedSupport || c.Scan != scan || c.Unsaved != unsaved { - return errors.New("extra45 reading: raw/masked/metadata/scan cohort counters differ") + if raw != expected.Raw || workflow != expected.Workflow || masked != expected.Masked || metadata != expected.Metadata || notices != expected.Candidates || support != expected.Support || saved != expected.Saved || read != expected.Read || workflowSupport != expected.WorkflowSupport || maskedSupport != expected.MaskedSupport || scan != expected.Scan || unsaved != expected.Unsaved || c.Candidates != expected.Candidates || c.Raw != raw || c.Workflow != workflow || c.Masked != masked || c.Metadata != metadata || c.Notices != notices || c.Support != support || c.Saved != saved || c.Read != read || c.WorkflowSupport != workflowSupport || c.MaskedSupport != maskedSupport || c.Scan != scan || c.Unsaved != unsaved { + return bad("raw/masked/metadata/scan cohort counters differ") } - if x45Digest(bodyRows) != extra45Bodies || x45Digest(actorRows) != extra45PrimaryActors || x45Digest(supportRows) != extra45Supports { - return errors.New("extra45 reading: fixed independent identities or reading actors changed") + if x45Digest(bodyRows) != expected.Bodies || x45Digest(actorRows) != expected.Actors || x45Digest(supportRows) != expected.Supports { + return bad("fixed independent identities or reading actors changed") } return nil } @@ -384,20 +407,24 @@ type cohortLedgerRow struct { Disposition string `json:"disposition"` } -func validateSixmileCohortIndex(index sixmileCohortIndex, old legacy21Projection, extra extra45Assessment, ledger []cohortLedgerRow) error { +func validateSixmileCohortIndex(index sixmileCohortIndex, old legacy21Projection, extra, next20 extra45Assessment, ledger []cohortLedgerRow) error { if err := validateExtra45Reading(extra); err != nil { return err } - if index.Source != old.Source || index.Source != extra.Source || index.Commit != old.Commit || index.Commit != extra.Commit || index.Tree != old.Tree || index.Tree != extra.Tree || index.Expected != 55623 || !x45True(index.NotCap) || len(index.Cohorts) != 2 || len(old.Entries) != 21 || old.Read != 21 { + if err := validateReceivedReading(next20, next20ReadingSpec); err != nil { + return err + } + if index.Source != old.Source || index.Source != extra.Source || index.Source != next20.Source || index.Commit != old.Commit || index.Commit != extra.Commit || index.Commit != next20.Commit || index.Tree != old.Tree || index.Tree != extra.Tree || index.Tree != next20.Tree || index.Expected != 55623 || !x45True(index.NotCap) || len(index.Cohorts) != 3 || len(old.Entries) != 21 || old.Read != 21 { return errors.New("sixmile cohorts: source or historical boundary differs") } - if index.Cohorts[0].ID != "first21" || index.Cohorts[0].Artifact != "skills-3080-sixmile-partial-evaluation.json" || index.Cohorts[1].ID != "next45" || index.Cohorts[1].Artifact != "skills-3080-sixmile-next45-evaluation.json" { + if index.Cohorts[0].ID != "first21" || index.Cohorts[0].Artifact != "skills-3080-sixmile-partial-evaluation.json" || index.Cohorts[1].ID != "next45" || index.Cohorts[1].Artifact != "skills-3080-sixmile-next45-evaluation.json" || index.Cohorts[2].ID != "next20" || index.Cohorts[2].Artifact != "skills-3080-sixmile-next20-evaluation.json" { return errors.New("sixmile cohorts: missing/repeated/unbound evidence cohort") } known := map[string]extra45Entry{} + cohortByID := map[string]int{} paths := map[string]bool{} allPaths, raw, workflow, masked, metadata, support, saved, read, maskedSupport, scan, unsaved, savedUnread := 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - for i, entries := range [][]extra45Entry{old.Entries, extra.Entries} { + for i, entries := range [][]extra45Entry{old.Entries, extra.Entries, next20.Entries} { c := index.Cohorts[i] cRaw, cWorkflow, cSupport, cSaved, cRead, cMasked, cScan, cUnsaved := 0, 0, 0, 0, 0, 0, 0, 0 for _, e := range entries { @@ -405,6 +432,7 @@ func validateSixmileCohortIndex(index sixmileCohortIndex, old legacy21Projection return errors.New("sixmile cohorts: repeated or conflicting assessed identity") } known[e.ID] = e + cohortByID[e.ID] = i paths[e.Path] = true allPaths++ full := x45True(e.Read) @@ -460,15 +488,11 @@ func validateSixmileCohortIndex(index sixmileCohortIndex, old legacy21Projection return errors.New("sixmile cohorts: per-cohort raw/masked/support projection differs") } } - if allPaths != 66 || raw != 64 || workflow != 65 || masked != 1 || metadata != 1 || index.Paths != allPaths || index.Raw != raw || index.Workflow != workflow || index.Masked != masked || index.Metadata != metadata || index.NotRaw != index.Expected-raw || index.Support != support || index.Saved != saved || index.Read != read || index.MaskedSupport != maskedSupport || index.Scan != scan || index.Unsaved != unsaved || index.SavedUnread != savedUnread || index.WorkflowSupport != read+maskedSupport || index.Unassessed != index.Expected-allPaths { + if allPaths != 86 || raw != 84 || workflow != 85 || masked != 1 || metadata != 1 || index.Paths != allPaths || index.Raw != raw || index.Workflow != workflow || index.Masked != masked || index.Metadata != metadata || index.NotRaw != index.Expected-raw || index.Support != support || index.Saved != saved || index.Read != read || index.MaskedSupport != maskedSupport || index.Scan != scan || index.Unsaved != unsaved || index.SavedUnread != savedUnread || index.WorkflowSupport != read+maskedSupport || index.Unassessed != index.Expected-allPaths { return errors.New("sixmile cohorts: aggregate coverage double-counted or conflated a reading category") } matched := map[string]bool{} - oldInstalled, oldIntegrated, oldExcluded, newInstalled, newIntegrated, newExcluded := 0, 0, 0, 0, 0, 0 - oldIDs := map[string]bool{} - for _, e := range old.Entries { - oldIDs[e.ID] = true - } + var installed, integrated, excluded [3]int for _, row := range ledger { if row.Source != index.Source { continue @@ -478,34 +502,23 @@ func validateSixmileCohortIndex(index sixmileCohortIndex, old legacy21Projection return errors.New("sixmile cohorts: live source disposition is outside all assessed cohorts or repeated") } matched[row.ID] = true + cohort := cohortByID[row.ID] switch row.Disposition { case "installed_new_adaptation": if !e.Installed || e.Integrated || e.Excluded { return errors.New("sixmile cohorts: installation flag differs") } - if oldIDs[e.ID] { - oldInstalled++ - } else { - newInstalled++ - } + installed[cohort]++ case "integrated_existing": if !e.Integrated || e.Installed || e.Excluded { return errors.New("sixmile cohorts: integration flag differs") } - if oldIDs[e.ID] { - oldIntegrated++ - } else { - newIntegrated++ - } + integrated[cohort]++ case "excluded": if !e.Excluded || e.Installed || e.Integrated { return errors.New("sixmile cohorts: exclusion flag differs") } - if oldIDs[e.ID] { - oldExcluded++ - } else { - newExcluded++ - } + excluded[cohort]++ default: return errors.New("sixmile cohorts: unfinished disposition counted as final") } @@ -515,7 +528,7 @@ func validateSixmileCohortIndex(index sixmileCohortIndex, old legacy21Projection return errors.New("sixmile cohorts: source flag has no corresponding live disposition") } } - if oldInstalled != old.Installed || oldIntegrated != old.Integrated || oldExcluded != old.Excluded || newInstalled != extra.Installed || newIntegrated != extra.Integrated || newExcluded != extra.Excluded { + if installed != [3]int{old.Installed, extra.Installed, next20.Installed} || integrated != [3]int{old.Integrated, extra.Integrated, next20.Integrated} || excluded != [3]int{old.Excluded, extra.Excluded, next20.Excluded} { return errors.New("sixmile cohorts: bounded cohort disposition counters differ from union ledger") } return nil @@ -529,15 +542,17 @@ func TestSixmileCohortIndexConservesReadingCategoriesAndAllLiveSourceRows(t *tes "workflow_support_missing": "sixmile cohorts: aggregate coverage double-counted or conflated a reading category", "unassessed_count": "sixmile cohorts: aggregate coverage double-counted or conflated a reading category", "cohort_overlap": "sixmile cohorts: repeated or conflicting assessed identity", + "next20_overlap": "sixmile cohorts: repeated or conflicting assessed identity", "unknown_adoption": "sixmile cohorts: live source disposition is outside all assessed cohorts or repeated", "duplicate_source_row": "sixmile cohorts: live source disposition is outside all assessed cohorts or repeated", "extra_source_flag": "sixmile cohorts: source flag has no corresponding live disposition", } - for _, kind := range []string{"valid", "raw_includes_masked", "workflow_count", "unknown_size_count", "workflow_support_missing", "unassessed_count", "cohort_overlap", "unknown_adoption", "duplicate_source_row", "extra_source_flag"} { + for _, kind := range []string{"valid", "raw_includes_masked", "workflow_count", "unknown_size_count", "workflow_support_missing", "unassessed_count", "cohort_overlap", "next20_overlap", "unknown_adoption", "duplicate_source_row", "extra_source_flag"} { t.Run(kind, func(t *testing.T) { var index sixmileCohortIndex var old legacy21Projection var extra extra45Assessment + var next20 extra45Assessment var ledger struct { Entries []cohortLedgerRow `json:"entries"` Excluded []cohortLedgerRow `json:"excluded_entries"` @@ -545,6 +560,7 @@ func TestSixmileCohortIndexConservesReadingCategoriesAndAllLiveSourceRows(t *tes loadPublicReceipt(t, "skills-3080-sixmile-evaluation-index.json", &index) loadPublicReceipt(t, "skills-3080-sixmile-partial-evaluation.json", &old) loadPublicReceipt(t, "skills-3080-sixmile-next45-evaluation.json", &extra) + loadPublicReceipt(t, "skills-3080-sixmile-next20-evaluation.json", &next20) loadPublicReceipt(t, "skills-3080-adoptions.json", &ledger) rows := append(ledger.Entries, ledger.Excluded...) switch kind { @@ -563,6 +579,9 @@ func TestSixmileCohortIndexConservesReadingCategoriesAndAllLiveSourceRows(t *tes // the union collision check rather than its URL/hash validation. old.Entries[0].ID = extra.Entries[0].ID old.Entries[0].Path = extra.Entries[0].Path + case "next20_overlap": + old.Entries[0].ID = next20.Entries[0].ID + old.Entries[0].Path = next20.Entries[0].Path case "unknown_adoption": rows = append(rows, cohortLedgerRow{ID: "unassessed", Source: "6mile/skills", Disposition: "installed_new_adaptation"}) case "duplicate_source_row": @@ -580,7 +599,7 @@ func TestSixmileCohortIndexConservesReadingCategoriesAndAllLiveSourceRows(t *tes case "extra_source_flag": extra.Entries[0].Installed = true } - err := validateSixmileCohortIndex(index, old, extra, rows) + err := validateSixmileCohortIndex(index, old, extra, next20, rows) if (err != nil) != (kind != "valid") { t.Fatalf("%s: %v", kind, err) } @@ -615,6 +634,13 @@ type sixmileReadProjection struct { Masked int `json:"masked_workflow_body"` Metadata int `json:"metadata_only_primary"` } `json:"sixmile_additional_entrypoint_evaluation"` + Next20 struct { + Source string `json:"source"` + Read int `json:"full_body_read"` + Workflow int `json:"workflow_body_read"` + Masked int `json:"masked_workflow_body"` + Metadata int `json:"metadata_only_primary"` + } `json:"sixmile_next20_entrypoint_evaluation"` Aggregate struct { Source string `json:"source"` Expected int `json:"expected"` @@ -629,7 +655,7 @@ type sixmileReadProjection struct { } `json:"sixmile_body_read_coverage"` } -func validateSixmileReadProjection(p sixmileReadProjection, index sixmileCohortIndex, old legacy21Projection, extra extra45Assessment) error { +func validateSixmileReadProjection(p sixmileReadProjection, index sixmileCohortIndex, old legacy21Projection, extra, next20 extra45Assessment) error { a := p.Aggregate if a.Source != "skills-3080-sixmile-evaluation-index.json" || a.Expected != index.Expected || a.Paths != index.Paths || a.Read != index.Raw || a.Workflow != index.Workflow || a.Masked != index.Masked || a.Metadata != index.Metadata || a.NotRaw != index.NotRaw || a.NotAssessed != index.Expected-index.Paths || !x45False(a.Complete) { return errors.New("sixmile read projection: aggregate is not the disjoint source index") @@ -637,6 +663,9 @@ func validateSixmileReadProjection(p sixmileReadProjection, index sixmileCohortI if p.Legacy.Source != "skills-3080-sixmile-partial-evaluation.json" || p.Legacy.Read != old.Read || !x45True(p.Legacy.Historical) || p.Extra.Source != "skills-3080-sixmile-next45-evaluation.json" || p.Extra.Read != extra.Counts.Raw || p.Extra.Workflow != extra.Counts.Workflow || p.Extra.Masked != extra.Counts.Masked || p.Extra.Metadata != extra.Counts.Metadata { return errors.New("sixmile read projection: current source aggregate was confused with one evidence cohort") } + if p.Next20.Source != "skills-3080-sixmile-next20-evaluation.json" || p.Next20.Read != next20.Counts.Raw || p.Next20.Workflow != next20.Counts.Workflow || p.Next20.Masked != next20.Counts.Masked || p.Next20.Metadata != next20.Counts.Metadata { + return errors.New("sixmile read projection: next20 is missing or conflated with another cohort") + } other := p.Complete.Read + p.Mizchi.Read + p.Mengto.Read if p.Raw != other+index.Raw || p.Workflow != other+index.Workflow { return errors.New("sixmile read projection: all-source raw and workflow totals differ") @@ -644,16 +673,18 @@ func validateSixmileReadProjection(p sixmileReadProjection, index sixmileCohortI return nil } func TestSixmileGlobalReadProjectionUsesRawCoverageAndPreservesHistoricalCohorts(t *testing.T) { - for _, kind := range []string{"valid", "raw_includes_masked", "all_raw_total", "all_workflow_total", "lost_legacy_scope", "extra_raw_total", "wrong_index", "wrong_unassessed"} { + for _, kind := range []string{"valid", "raw_includes_masked", "all_raw_total", "all_workflow_total", "lost_legacy_scope", "extra_raw_total", "next20_raw_total", "next20_source", "wrong_index", "wrong_unassessed"} { t.Run(kind, func(t *testing.T) { var p sixmileReadProjection var index sixmileCohortIndex var old legacy21Projection var extra extra45Assessment + var next20 extra45Assessment loadPublicReceipt(t, "skills-3080-progress.json", &p) loadPublicReceipt(t, "skills-3080-sixmile-evaluation-index.json", &index) loadPublicReceipt(t, "skills-3080-sixmile-partial-evaluation.json", &old) loadPublicReceipt(t, "skills-3080-sixmile-next45-evaluation.json", &extra) + loadPublicReceipt(t, "skills-3080-sixmile-next20-evaluation.json", &next20) switch kind { case "raw_includes_masked": p.Aggregate.Read++ @@ -665,12 +696,16 @@ func TestSixmileGlobalReadProjectionUsesRawCoverageAndPreservesHistoricalCohorts p.Legacy.Historical = nil case "extra_raw_total": p.Extra.Read++ + case "next20_raw_total": + p.Next20.Read++ + case "next20_source": + p.Next20.Source = p.Extra.Source case "wrong_index": p.Aggregate.Source = "skills-3080-sixmile-partial-evaluation.json" case "wrong_unassessed": p.Aggregate.NotAssessed = p.Aggregate.NotRaw } - err := validateSixmileReadProjection(p, index, old, extra) + err := validateSixmileReadProjection(p, index, old, extra, next20) if (err != nil) != (kind != "valid") { t.Fatalf("%s: %v", kind, err) } diff --git a/tools/skills-3080-catalog/sixmile_assessment_test.go b/tools/skills-3080-catalog/sixmile_assessment_test.go index a4b4272c..93b7fc23 100644 --- a/tools/skills-3080-catalog/sixmile_assessment_test.go +++ b/tools/skills-3080-catalog/sixmile_assessment_test.go @@ -102,7 +102,7 @@ const sixmileNext10Actors = "6301d6942aea35a7738475d8db2870834fb0e06330f37c1e35f func validateSixmileAssessment(a sixmileAssessment, ledger []partialAdoption) error { // This immutable evidence cohort owns only its selected21 identities. // TestSixmileCohortIndexConservesReadingCategoriesAndAllLiveSourceRows - // accounts for every6mile ledger row across both cohorts, rejecting unknown + // accounts for every6mile ledger row across all indexed cohorts, rejecting unknown // and repeated rows. Do not mutate the caller's ledger backing array. selectedIDs := map[string]bool{} for _, entry := range a.Fixed { diff --git a/tools/skills-3080-catalog/sixmile_next20_evaluation_test.go b/tools/skills-3080-catalog/sixmile_next20_evaluation_test.go new file mode 100644 index 00000000..ecbf720e --- /dev/null +++ b/tools/skills-3080-catalog/sixmile_next20_evaluation_test.go @@ -0,0 +1,581 @@ +package main + +import ( + "crypto/sha256" + "encoding/hex" + "encoding/json" + "errors" + "fmt" + "regexp" + "sort" + "strings" + "testing" +) + +func validateNext20Reception(a extra45Assessment, ledger []cohortLedgerRow) error { + if err := validateReceivedReading(a, next20ReadingSpec); err != nil { + return err + } + known := map[string]extra45Entry{} + for _, e := range a.Entries { + known[e.ID] = e + } + matched := map[string]bool{} + installed, integrated, excluded := 0, 0, 0 + for _, row := range ledger { + e, selected := known[row.ID] + if !selected { + continue + } // The mandatory whole-source union rejects unknown IDs. + if matched[row.ID] || row.Source != a.Source || row.Commit != e.Commit || row.Path != e.Path || row.SHA != e.SHA { + return errors.New("next20 reception: live source disposition identity differs") + } + matched[row.ID] = true + switch row.Disposition { + case "installed_new_adaptation": + if !e.Installed || e.Integrated || e.Excluded { + return errors.New("next20 reception: final flag differs from the live ledger") + } + installed++ + case "integrated_existing": + if !e.Integrated || e.Installed || e.Excluded { + return errors.New("next20 reception: final flag differs from the live ledger") + } + integrated++ + case "excluded": + if !e.Excluded || e.Installed || e.Integrated { + return errors.New("next20 reception: final flag differs from the live ledger") + } + excluded++ + default: + return errors.New("next20 reception: unfinished decision counted as final") + } + } + for _, e := range a.Entries { + if !matched[e.ID] && (!x45False(e.Rights.Copy) || e.Installed || e.Integrated || e.Excluded) { + return errors.New("next20 reception: unaccepted grant or final disposition was added") + } + } + if installed != a.Installed || integrated != a.Integrated || excluded != a.Excluded { + return errors.New("next20 reception: decision counts differ from the live ledger") + } + return nil +} + +func TestNext20ReceptionKeepsRawActorsAndMaskedScansDistinct(t *testing.T) { + for _, tc := range []struct{ name, want string }{ + {"valid", ""}, + {"synthetic_aligned_future_adoption", ""}, + {"synthetic_wrong_adoption", "next20 reception: live source disposition identity differs"}, + {"raw_loses_workflow", "next20 reading: raw primary acquired masking or lost its reader"}, + {"masked_scan_claims_full", "next20 reading: raw support acquired masking/scanning or a wrong reader"}, + {"forged_consistent_actor", "next20 reading: fixed independent identities or reading actors changed"}, + {"unknown_bytes_zero", "next20 reading: unknown support bytes or reading were invented"}, + {"wrong_source_url", "next20 reading: primary identity/state is absent or conflated"}, + {"copy_grant", "next20 reception: unaccepted grant or final disposition was added"}, + {"final_flag", "next20 reception: unaccepted grant or final disposition was added"}, + } { + t.Run(tc.name, func(t *testing.T) { + var a extra45Assessment + loadPublicReceipt(t, "skills-3080-sixmile-next20-evaluation.json", &a) + var current struct{ Entries, Excluded []cohortLedgerRow } + // Explicit tags are needed for the separate excluded_entries property. + var all struct { + Entries []cohortLedgerRow `json:"entries"` + Excluded []cohortLedgerRow `json:"excluded_entries"` + } + loadPublicReceipt(t, "skills-3080-adoptions.json", &all) + current.Entries, current.Excluded = all.Entries, all.Excluded + rows := append(append([]cohortLedgerRow(nil), current.Entries...), current.Excluded...) + yes, no, actor := true, false, "forged-reader" + switch tc.name { + case "synthetic_aligned_future_adoption", "synthetic_wrong_adoption": + // Relationship fixture only, never permission or an actual adoption. + e := &a.Entries[0] + e.Installed = true + e.Rights.Copy = &yes + a.Installed++ + row := cohortLedgerRow{ID: e.ID, Source: a.Source, Commit: e.Commit, Path: e.Path, SHA: e.SHA, Disposition: "installed_new_adaptation"} + if tc.name == "synthetic_wrong_adoption" { + row.Path = "wrong/SKILL.md" + } + rows = append(rows, row) + case "raw_loses_workflow": + a.Entries[0].Workflow = &no + case "wrong_source_url": + a.Entries[0].URL = "https://example.invalid/other" + case "copy_grant": + a.Entries[0].Rights.Copy = &yes + case "final_flag": + a.Entries[0].Installed = true + case "forged_consistent_actor": + e := &a.Entries[0] + e.ReadBy, e.Rights.ReadBy = &actor, &actor + for i := range e.Support { + if x45True(e.Support[i].Read) { + e.Support[i].ReadBy = &actor + } + if x45True(e.Support[i].Scan) { + e.Support[i].ScanBy = &actor + } + } + case "masked_scan_claims_full", "unknown_bytes_zero": + changed := false + for i := range a.Entries { + for j := range a.Entries[i].Support { + s := &a.Entries[i].Support[j] + if tc.name == "masked_scan_claims_full" && x45True(s.Scan) && s.Mask != nil && *s.Mask > 0 { + s.Read, s.Workflow = &yes, &yes + changed = true + } else if tc.name == "unknown_bytes_zero" && !x45True(s.Saved) { + zero := 0 + s.Bytes = &zero + changed = true + } + if changed { + break + } + } + if changed { + break + } + } + if !changed { + t.Fatal("no actual fixture matched the mutation") + } + } + err := validateNext20Reception(a, rows) + if tc.want == "" { + if err != nil { + t.Fatal(err) + } + } else if err == nil || err.Error() != tc.want { + t.Fatalf("%s reached another guard: %v", tc.name, err) + } + }) + } +} + +const receivedNamespaceRows = "55a00af5245009d89fb78ee476515539fd99f4df9e5454a4bf8bfecd6fab8764" +const receivedExpandedRights = "177b90aa2a8caded4582c0391be8fd3af1e7ce8642121bdfc4711b8d77e3928e" +const receivedRightsDefinitions = "dc66ef51adca451474aa419a4e1c76a0c59dbf78c7bc267f069b92bc2cc58afb" +const receivedCorrectionTargets = "9ef66dd80771a1bf4e47a4c86587dcebb8e521ce8341562946a1ab271af1f488" + +// Anchors come from original3565/3566 definitions/order and the earlier coded +// snapshot, not from the current expanded public fields being validated. +type publicReadingRelations struct { + Entries []struct { + ID string `json:"inventory_id"` + Path string `json:"path"` + SHA string `json:"source_sha256"` + Namespace string `json:"reader_reference_namespace"` + Row *int `json:"reader_reference_row_number"` + Ordinal *int `json:"reader_one_based_ordinal"` + Rights map[string]any `json:"individual_rights_review"` + } `json:"entries"` + Namespaces []struct { + Todo int `json:"reader_todo"` + Base int `json:"reference_base"` + Rows []struct { + Number int `json:"reference_number"` + Ordinal int `json:"one_based_ordinal"` + ID string `json:"inventory_id"` + Path string `json:"path"` + SHA string `json:"primary_sha256"` + } `json:"rows"` + } `json:"reader_reference_namespaces"` + Definitions map[string]any `json:"reader_rights_definitions"` + Corrections []string `json:"parent_policy_corrections"` + Provenance []struct { + Number int `json:"correction_number"` + IDs []json.RawMessage `json:"inventory_ids"` + Resolved string `json:"resolved_wording"` + } `json:"parent_policy_correction_provenance"` +} + +func validatePublicReadingRelations(a publicReadingRelations) error { + if len(a.Entries) != 45 || len(a.Namespaces) != 2 || len(a.Corrections) != 13 || len(a.Provenance) != 13 { + return errors.New("public relations: fixed scope differs") + } + byID := map[string]int{} + for i, e := range a.Entries { + if e.ID == "" { + return errors.New("public relations: source identity absent") + } + if _, ok := byID[e.ID]; ok { + return errors.New("public relations: source identity repeated") + } + byID[e.ID] = i + } + var namespaceLines []string + seen := map[string]bool{} + for _, n := range a.Namespaces { + if (n.Todo != 3565 && n.Todo != 3566) || len(n.Rows) != 20 || n.Base != map[int]int{3565: 1, 3566: 0}[n.Todo] { + return errors.New("public relations: source namespace/base differs") + } + for i, row := range n.Rows { + idx, ok := byID[row.ID] + if !ok || seen[row.ID] { + return errors.New("public relations: namespace source missing or repeated") + } + e := a.Entries[idx] + if row.Number != i+n.Base || row.Ordinal != i+1 || e.Path != row.Path || e.SHA != row.SHA || e.Namespace != fmt.Sprint(n.Todo) || e.Row == nil || *e.Row != row.Number || e.Ordinal == nil || *e.Ordinal != row.Ordinal { + return errors.New("public relations: source row and entry disagree") + } + seen[row.ID] = true + namespaceLines = append(namespaceLines, fmt.Sprintf("%d\t%d\t%d\t%d\t%s\t%s\t%s\n", n.Todo, n.Base, row.Number, row.Ordinal, row.ID, row.Path, row.SHA)) + } + } + if len(seen) != 40 || x45Digest(namespaceLines) != receivedNamespaceRows { + return errors.New("public relations: source namespace differs from received order") + } + for _, e := range a.Entries { + if e.Namespace != "" && !seen[e.ID] { + return errors.New("public relations: entry has no source namespace row") + } + } + bare := regexp.MustCompile(`\b(?:S1|N1|U1)\b|top\.shared_rights`) + var rightsLines []string + for _, e := range a.Entries { + values := map[string]any{} + for _, key := range []string{"historical_reader_scope", "not_covered", "unconfirmed"} { + if v, ok := e.Rights[key]; ok { + b, err := json.Marshal(v) + if err != nil { + return err + } + if bare.Match(b) { + return errors.New("public relations: current rights terms are unresolved") + } + values[key] = v + } + } + if _, expanded := e.Rights["historical_reader_shorthand"]; expanded { + b, err := json.Marshal(values) + if err != nil { + return err + } + rightsLines = append(rightsLines, e.ID+"\t"+string(b)+"\n") + } + } + if len(rightsLines) != 24 || x45Digest(rightsLines) != receivedExpandedRights { + return errors.New("public relations: expanded rights differ from received definitions") + } + defs := map[string]any{"reader3565_shared_rights": a.Definitions["reader3565_shared_rights"], "reader3566": a.Definitions["reader3566"]} + b, err := json.Marshal(defs) + if err != nil { + return err + } + h := sha256.Sum256(b) + if hex.EncodeToString(h[:]) != receivedRightsDefinitions { + return errors.New("public relations: original rights definitions changed") + } + var targetLines []string + for i, p := range a.Provenance { + if p.Number != i+1 || p.Resolved != a.Corrections[i] { + return errors.New("public relations: correction provenance differs") + } + ids := []string{} + for _, raw := range p.IDs { + var id string + if json.Unmarshal(raw, &id) != nil || id == "" { + return errors.New("public relations: null or empty correction target") + } + if _, ok := byID[id]; !ok { + return errors.New("public relations: correction target is unknown") + } + ids = append(ids, id) + } + sort.Strings(ids) + targetLines = append(targetLines, fmt.Sprintf("%d\t%s\n", p.Number, strings.Join(ids, "\t"))) + } + if x45Digest(targetLines) != receivedCorrectionTargets { + return errors.New("public relations: correction targets differ from received mapping") + } + if !strings.Contains(a.Corrections[4], "is not an exclusion") || !strings.Contains(a.Corrections[4], "All candidates remain accounted for") || !strings.Contains(a.Corrections[5], "rights question is needed now") || !strings.Contains(a.Corrections[6], "not an exclusion") { + return errors.New("public relations: original owner-scope constraints were weakened") + } + return nil +} + +func TestPublicReadingRelationsPreserveSourceOrderRightsAndTargets(t *testing.T) { + for _, tc := range []struct{ name, want string }{ + {"valid", ""}, + {"wrong_base", "public relations: source namespace/base differs"}, + {"entry_row", "public relations: source row and entry disagree"}, + {"unresolved_rights", "public relations: current rights terms are unresolved"}, + {"changed_rights", "public relations: expanded rights differ from received definitions"}, + {"changed_legend", "public relations: original rights definitions changed"}, + {"null_target", "public relations: null or empty correction target"}, + {"unknown_target", "public relations: correction target is unknown"}, + {"known_target_swap", "public relations: correction targets differ from received mapping"}, + {"global_target_added", "public relations: correction targets differ from received mapping"}, + {"scope_weakened", "public relations: original owner-scope constraints were weakened"}, + } { + t.Run(tc.name, func(t *testing.T) { + var a publicReadingRelations + loadPublicReceipt(t, "skills-3080-sixmile-next45-evaluation.json", &a) + switch tc.name { + case "wrong_base": + a.Namespaces[1].Base = 1 + case "entry_row": + v := 99 + a.Entries[0].Row = &v + case "unresolved_rights": + a.Entries[0].Rights["unconfirmed"] = "U1" + case "changed_rights": + for i := range a.Entries { + if _, ok := a.Entries[i].Rights["historical_reader_shorthand"]; ok { + a.Entries[i].Rights["unconfirmed"] = "different" + break + } + } + case "changed_legend": + a.Definitions["reader3566"].(map[string]any)["S1"] = "different" + case "null_target": + a.Provenance[0].IDs = []json.RawMessage{json.RawMessage("null")} + case "unknown_target": + a.Provenance[0].IDs = []json.RawMessage{json.RawMessage(`"unknown"`)} + case "known_target_swap", "global_target_added": + id, err := json.Marshal(a.Entries[0].ID) + if err != nil { + t.Fatal(err) + } + if tc.name == "known_target_swap" { + a.Provenance[3].IDs = []json.RawMessage{id} + } else { + a.Provenance[0].IDs = []json.RawMessage{id} + } + case "scope_weakened": + a.Corrections[4] = "No current use alone does not final-exclude." + a.Provenance[4].Resolved = a.Corrections[4] + } + err := validatePublicReadingRelations(a) + if tc.want == "" { + if err != nil { + t.Fatal(err) + } + } else if err == nil || err.Error() != tc.want { + t.Fatalf("%s reached another guard: %v", tc.name, err) + } + }) + } +} + +const receivedNext20Namespace = "f9c638e1798583f8bd243f7305be6d13181d341f6b8ea49c7db1fbc45ac7dab0" +const receivedNext20DefaultScope = "69211d9a637807bb8cfc4329d8f7d3a664104d9fef8a3acdc773472ad914836e" + +type next20Relations struct { + Entries []struct { + ID string `json:"inventory_id"` + Path string `json:"path"` + SHA string `json:"source_sha256"` + Namespace string `json:"reader_reference_namespace"` + Row *int `json:"reader_original_row"` + Disposition string `json:"candidate_disposition"` + Installed bool `json:"installed_by_todo3080"` + Integrated bool `json:"integrated_by_todo3080"` + Excluded bool `json:"excluded_by_todo3080"` + Rights struct { + Scope string `json:"historical_reader_scope"` + Intake string `json:"reader_scope_shorthand_at_intake"` + } `json:"individual_rights_review"` + Historical struct { + NotOwner *bool `json:"not_owner_policy"` + NotFinal *bool `json:"not_final_disposition"` + Namespace string `json:"reader_reference_namespace"` + Row *int `json:"reader_original_row"` + } `json:"historical_reader_proposal"` + } `json:"entries"` + Namespaces []struct { + Todo int `json:"reader_todo"` + Rows []struct { + Row int `json:"row"` + ID string `json:"inventory_id"` + Path string `json:"path"` + SHA string `json:"primary_sha256"` + } `json:"rows"` + } `json:"reader_namespaces"` + Definitions struct { + Default string `json:"default"` + } `json:"reader_scope_definitions"` + Corrections []string `json:"parent_policy_corrections"` +} + +func validateNext20Relations(a next20Relations) error { + if len(a.Entries) != 20 || len(a.Namespaces) != 1 || a.Namespaces[0].Todo != 3601 || len(a.Namespaces[0].Rows) != 20 || len(a.Corrections) < 3 { + return errors.New("next20 relations: fixed source namespace differs") + } + h := sha256.Sum256([]byte(a.Definitions.Default)) + if hex.EncodeToString(h[:]) != receivedNext20DefaultScope { + return errors.New("next20 relations: original default scope definition differs") + } + known := map[string]int{} + for i, e := range a.Entries { + if _, ok := known[e.ID]; ok || e.ID == "" { + return errors.New("next20 relations: repeated source identity") + } + known[e.ID] = i + } + var lines []string + for i, row := range a.Namespaces[0].Rows { + idx, ok := known[row.ID] + if !ok { + return errors.New("next20 relations: namespace entry is absent") + } + e := a.Entries[idx] + if row.Row != i+1 || e.Path != row.Path || e.SHA != row.SHA || e.Namespace != "3601" || e.Row == nil || *e.Row != row.Row || e.Historical.Namespace != "3601" || e.Historical.Row == nil || *e.Historical.Row != row.Row { + return errors.New("next20 relations: entry and source row disagree") + } + if !recordedTrue(e.Historical.NotOwner) || !recordedTrue(e.Historical.NotFinal) { + return errors.New("next20 relations: reader proposal was promoted to owner policy or final decision") + } + if !e.Installed && !e.Integrated && !e.Excluded && e.Disposition != "assessed_pending_parent_final_disposition" { + return errors.New("next20 relations: unfinished candidate was relabelled as a final disposition") + } + if strings.HasPrefix(e.Rights.Scope, "default") || e.Rights.Scope == "" || (strings.HasPrefix(e.Rights.Intake, "default") && !strings.Contains(e.Rights.Scope, a.Definitions.Default)) { + return errors.New("next20 relations: current scope shorthand is unresolved") + } + lines = append(lines, fmt.Sprintf("3601\t1\t%d\t%s\t%s\t%s\n", row.Row, row.ID, row.Path, row.SHA)) + } + if x45Digest(lines) != receivedNext20Namespace { + return errors.New("next20 relations: namespace differs from original reader order") + } + if !strings.Contains(a.Corrections[0], "is not an exclusion") || !strings.Contains(a.Corrections[0], "All candidates remain accounted for") || !strings.Contains(a.Corrections[2], "rights question is needed now") { + return errors.New("next20 relations: original owner-scope constraints were weakened") + } + return nil +} + +func TestNext20PublicRelationsAreStandaloneAndKeepReaderProposalsSeparate(t *testing.T) { + for _, tc := range []struct{ name, want string }{ + {"valid", ""}, {"wrong_row", "next20 relations: entry and source row disagree"}, {"scope_unresolved", "next20 relations: current scope shorthand is unresolved"}, {"definition_changed", "next20 relations: original default scope definition differs"}, {"policy_flag_missing", "next20 relations: reader proposal was promoted to owner policy or final decision"}, {"final_label", "next20 relations: unfinished candidate was relabelled as a final disposition"}, {"scope_weakened", "next20 relations: original owner-scope constraints were weakened"}, + } { + t.Run(tc.name, func(t *testing.T) { + var a next20Relations + loadPublicReceipt(t, "skills-3080-sixmile-next20-evaluation.json", &a) + switch tc.name { + case "wrong_row": + v := 99 + a.Entries[0].Row = &v + case "scope_unresolved": + a.Entries[0].Rights.Scope = "default" + case "definition_changed": + a.Definitions.Default = "changed" + case "policy_flag_missing": + a.Entries[0].Historical.NotOwner = nil + case "final_label": + a.Entries[0].Disposition = "excluded" + case "scope_weakened": + a.Corrections[0] = "No current use alone is not enough." + } + err := validateNext20Relations(a) + if tc.want == "" { + if err != nil { + t.Fatal(err) + } + } else if err == nil || err.Error() != tc.want { + t.Fatalf("%s reached another guard: %v", tc.name, err) + } + }) + } +} + +func TestBodyAliasTriageDoesNotBecomeSemanticReadingOrFinalDisposition(t *testing.T) { + var s struct { + Catalog string `json:"catalog_sha256"` + Rows int `json:"catalog_occurrences"` + Available int `json:"available_body_occurrences"` + Raw int `json:"unique_raw_bodies"` + ValidRaw int `json:"valid_normalized_raw_bodies"` + FailedRaw int `json:"non_utf8_raw_bodies"` + Valid int `json:"valid_normalized_occurrences"` + Failed int `json:"non_utf8_occurrences"` + Held int `json:"unavailable_or_held_occurrences"` + Remaining *int `json:"remaining_unmapped_occurrences"` + Mapped *bool `json:"all_available_occurrences_mapped"` + Normalized *bool `json:"all_available_bodies_normalized"` + Semantic *int `json:"semantic_primary_read_delta"` + Final *int `json:"final_disposition_delta"` + Central *int `json:"central_read_write"` + Executed *bool `json:"source_code_executed"` + Fetch *int `json:"external_fetches"` + HeldFetch *int `json:"held647_fetches"` + BodyText *int `json:"raw_source_bodies_in_this_public_artifact"` + Leads int `json:"pending_alias_leads"` + Caches []struct { + Name string `json:"name"` + SHA string `json:"sha256"` + Bytes int `json:"bytes"` + Records int `json:"records"` + } `json:"cache_files"` + Failures []struct { + ID string `json:"inventory_id"` + Reason string `json:"reason"` + } `json:"failed_rows"` + Matches []struct { + ID string `json:"inventory_id"` + Body struct { + Raw string `json:"raw_sha256"` + SHA string `json:"normalized_body_sha256"` + } `json:"body"` + Canonical []managedMetadataAdoption `json:"canonical_adoptions"` + Pending *bool `json:"header_and_support_comparison_pending"` + Rights *bool `json:"individual_rights_not_accepted"` + Final *bool `json:"final_disposition_applied"` + } `json:"matches"` + } + loadPublicReceipt(t, "skills-3080-body-alias-scan.json", &s) + expectedCaches := map[string]struct { + SHA string + Bytes, Records int + }{ + "catalog-body-digest-cache123649.jsonl": {"2f42ed5598c61103dc245f48c7ad38e61006264c8ce0c6f79a532cd0ffa066f5", 11523029, 28870}, + "catalog-body-segment2-cache123649.jsonl": {"6a74e50d4b7efb49c3ea085b03d79005638aab48f18e73863a46094df2a72c7c", 8584912, 20012}, + "catalog-body-segment3-cache123649.jsonl": {"9cfe970f019294197383953d7ca154f0de897e0bbea9bb549f5896b0284ab367", 7662902, 17858}, + } + cacheSeen := map[string]bool{} + records := 0 + for _, c := range s.Caches { + expected, ok := expectedCaches[c.Name] + if !ok || cacheSeen[c.Name] || c.SHA != expected.SHA || c.Bytes != expected.Bytes || c.Records != expected.Records { + t.Fatal("machine cache identity differs from the independent completed segments") + } + cacheSeen[c.Name] = true + records += c.Records + } + if len(cacheSeen) != 3 || records != s.Raw { + t.Fatal("cache rows do not cover the stated raw bodies") + } + if s.Catalog != "2d73c9a038a41cc220a9687b935bfa1e0b315b65d9bd6d3e54ddb4111972876c" || s.Rows != 73220 || s.Available != 72145 || s.Raw != 66740 || s.ValidRaw+s.FailedRaw != s.Raw || s.ValidRaw != 66713 || s.FailedRaw != 27 || s.Valid != 72118 || s.Failed != 27 || s.Valid+s.Failed != s.Available || s.Available+s.Held != s.Rows || s.Held != 1075 || !recordedTrue(s.Mapped) || !recordedFalse(s.Normalized) || s.Leads != 8 || len(s.Matches) != 8 || len(s.Failures) != 27 || !recordedFalse(s.Executed) { + t.Fatal("body triage units, failures or claim scope differ") + } + for _, v := range []*int{s.Remaining, s.Semantic, s.Final, s.Central, s.Fetch, s.HeldFetch, s.BodyText} { + if v == nil || *v != 0 { + t.Fatal("machine triage acquired an unrecorded/semantic/final/operational claim") + } + } + entries, _ := managedMetadataSources(t) + byID := map[string]string{} + for _, e := range entries { + byID[e.ID] = e.Target + } + seen := map[string]bool{} + for _, m := range s.Matches { + if m.ID == "" || seen[m.ID] || !validHex(m.Body.Raw, 64) || !validHex(m.Body.SHA, 64) || len(m.Canonical) != 1 || !recordedTrue(m.Pending) || !recordedTrue(m.Rights) || !recordedFalse(m.Final) { + t.Fatal("alias lead was duplicated, unbound or promoted") + } + seen[m.ID] = true + for _, c := range m.Canonical { + if c.ID == m.ID || byID[c.ID] != c.Target || c.Target == "" { + t.Fatal("alias canonical is not an actual adopted/integrated source") + } + } + } + for _, f := range s.Failures { + if f.ID == "" || seen[f.ID] || f.Reason != "non_utf8_body_pending" { + t.Fatal("failed source was dropped, duplicated or treated as normalized") + } + seen[f.ID] = true + } +}