feat(wiki): sync upstream v2026.10.4 core maintenance
Selectively port source hashing, locked manifest/memory writes, path-aware link lint and graph analysis, and revision-checked staging from upstream 4f457e154653756b04802d5aeb25c20f42b4770c. Record source hashes and exclusions. Preserve local archive/catalog citations, curated manifest metadata, config location, file-index and MCP behavior. Wire maintenance guidance into four skills without migrating vault contents or changing running services. Validation: 609 tests passed, including existing MCP/file-asset regressions and imported upstream maintenance tests. Read-only vault status left shared metadata hashes unchanged. Wiki MCP remains inactive; orders MCP is active.
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
{
|
||||
"upstream": "https://github.com/Ar9av/obsidian-wiki",
|
||||
"release": "v2026.10.4",
|
||||
"commit": "4f457e154653756b04802d5aeb25c20f42b4770c",
|
||||
"scope": "core-maintenance",
|
||||
"source_sha256": {
|
||||
"obsidian_wiki/vault.py": "604e65a01eb44438eea402f00f6c6c534e06856c20fe6c6b5ceb47e69291ee4a",
|
||||
"obsidian_wiki/cache.py": "f410ac542ce47719b5c8aa687bcd8beafd7d70a6f7db3cd2df24c9030628a9f6",
|
||||
"obsidian_wiki/clock.py": "456749a083b29a51820332970d9f07ee49bfaec6314cc51449672c8c96a53dce",
|
||||
"obsidian_wiki/memory.py": "81fc4e28b8cdd761d6be23d0de6e6b35dad49501ebb0ec9e3411f18bf23a3170",
|
||||
"obsidian_wiki/links.py": "79c2ebb69b9ded9823bffebf270b40b520e640e740b57a0f7909deb66cc5e980",
|
||||
"obsidian_wiki/lint.py": "482a69b5a7ef15c45d5054efec31c68f23e7906f62fcf9dd640987deac82c19e",
|
||||
"obsidian_wiki/graph_analysis.py": "a0932567affc219b7a7692036b389ec9674b8b9e1c94f72ce27fcc69078cb25c",
|
||||
"obsidian_wiki/provenance.py": "ce39dca4a9069814ee0b3dd779ebdcf32942d510048b44ed7b71fa9521734b9b",
|
||||
"obsidian_wiki/temporal.py": "9e31cdd08b1dabbc6d94590db7b5b2295923d8f33e299d9179d84820955c3395",
|
||||
"obsidian_wiki/trust.py": "c397465fcdcb2df31c0ea64ba65ef411532161b174f170be2d9662d8e75745cd",
|
||||
"obsidian_wiki/staging.py": "626d6f059ec089ca23981d1e9c3d9ba90266c74292ee313e654ac713eb38dbb7"
|
||||
},
|
||||
"cli_functions": [
|
||||
"SchemaOptions",
|
||||
"_memory_fields",
|
||||
"_memory_takeaways",
|
||||
"_note_source_ambiguity",
|
||||
"_print_lint",
|
||||
"_read_config_file",
|
||||
"_report_empty_local_vault",
|
||||
"_resolve_schema_command_context",
|
||||
"_resolve_source_arg",
|
||||
"_schema_cli_values",
|
||||
"_schema_csv",
|
||||
"_schema_options",
|
||||
"_schema_source_value",
|
||||
"_source_candidates",
|
||||
"_timezone_report",
|
||||
"_verb_and_fields",
|
||||
"cmd_cache_check",
|
||||
"cmd_cache_hash",
|
||||
"cmd_cache_update",
|
||||
"cmd_graph_analyse",
|
||||
"cmd_lint",
|
||||
"cmd_memory",
|
||||
"cmd_projects_check",
|
||||
"cmd_staging"
|
||||
],
|
||||
"commands": [
|
||||
"graph-analyse",
|
||||
"cache-check",
|
||||
"projects-check",
|
||||
"cache-update",
|
||||
"cache-hash",
|
||||
"lint",
|
||||
"memory",
|
||||
"staging"
|
||||
],
|
||||
"excluded": "upstream server, setup/hooks, session brain, retrieval platform and bulk vault migrations",
|
||||
"test_exclusions_outside_scope": {
|
||||
"clock": [
|
||||
"TestDocs",
|
||||
"test_scaffold_writes_the_key_and_stamps_in_the_zone",
|
||||
"test_setup_cli_records_the_zone",
|
||||
"test_setup_cli_refuses_a_bad_zone_before_touching_anything"
|
||||
],
|
||||
"memory": [
|
||||
"test_a_scaffolded_vault_is_born_migrated",
|
||||
"test_a_scaffolded_vault_carries_the_adoption_record"
|
||||
],
|
||||
"links": [
|
||||
"obsidian_wiki.graphrag",
|
||||
"test_graph_query_index_matches_the_graph"
|
||||
],
|
||||
"lint": [
|
||||
"test_invalid_configured_required_trust_field_fails_closed_for_all_cli_paths",
|
||||
"test_empty_configured_schema_values_fail_closed_for_all_cli_paths",
|
||||
"test_blank_config_schema_source_cannot_be_masked_by_valid_cli_source",
|
||||
"test_distributed_schema_config_contract_names_all_four_variables",
|
||||
"test_correction_contract_requires_temporal_authority_and_immutable_hash_check"
|
||||
],
|
||||
"graph_analysis": [
|
||||
"TestGitignoreBackfill"
|
||||
],
|
||||
"trust": [
|
||||
"test_owner_lifecycle_cli_record_then_check",
|
||||
"test_invalid_review_timestamp_is_rejected_by_record_cli",
|
||||
"test_trust_record_cli_requires_explicit_approval",
|
||||
"test_trust_record_and_check_cli_round_trip",
|
||||
"test_owner_schema_cli_excludes_then_removes_no_confidence_ledger_entry",
|
||||
"test_trust_record_all_human_output_lists_no_confidence_without_removal",
|
||||
"test_trust_record_all_human_output_warns_when_rebuild_removes_stale_entry",
|
||||
"test_trust_record_page_human_output_warns_when_stale_entry_is_removed",
|
||||
"test_trust_record_page_human_output_reports_zero_removals_without_warning",
|
||||
"test_explicit_vault_cli_override_reports_cli_schema_source",
|
||||
"test_partial_trust_record_does_not_approve_other_stale_pages",
|
||||
"test_partial_trust_record_reports_malformed_ledger_without_traceback"
|
||||
],
|
||||
"temporal": [
|
||||
"obsidian_wiki.graphrag",
|
||||
"test_expired_page_leaves_retrieval_but_stays_in_the_graph",
|
||||
"test_query_as_of_returns_the_page_that_was_true_then",
|
||||
"test_include_historical_ranks_both",
|
||||
"test_temporal_keys_are_absent_on_pages_that_do_not_opt_in",
|
||||
"test_structural_intents_still_see_historical_pages",
|
||||
"test_graph_query_cli_accepts_as_of",
|
||||
"test_cli_rejects_a_malformed_as_of"
|
||||
]
|
||||
},
|
||||
"local_adaptations": [
|
||||
"Keep existing ~/.obsidian-wiki/config location and adapt the memory CLI fixture accordingly",
|
||||
"Exclude local source, metadata, inbox and bot-export directories from knowledge pages",
|
||||
"Resolve _sources/archive and _sources/catalog citations without changing file extensions",
|
||||
"Preserve pages_produced when cache-update omits --pages",
|
||||
"Keep local CLI, MCP dependency range, service gating and curated source-registry metadata"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user