@hasna/skills 0.10.62 → 0.10.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -560,6 +560,47 @@ the managed policy, so the witness is a tripwire, not a security boundary. See
560
560
  A stronger witness for plugins outside receipt-backed admission is planned and
561
561
  not yet implemented.
562
562
 
563
+ Captured review catalogs are immutable evidence, while configuration and plugin
564
+ files remain live discovery inputs. To retain a captured Codex native catalog,
565
+ explicitly add `reviewArtifacts` to its Codex entry in `--discovery-inputs`:
566
+
567
+ ```json
568
+ "reviewArtifacts": [{
569
+ "kind": "codex-native-catalog",
570
+ "path": "/absolute/private/reviewed-catalog.json",
571
+ "sha256": "<exact original file SHA-256>"
572
+ }]
573
+ ```
574
+
575
+ The same path and digest must already be a full byte witness in `sources`.
576
+ The normal read-only install plan validates the catalog using its owning schema;
577
+ apply retains its exact bytes privately under the resolved Skills data directory
578
+ at `agent-discovery/artifacts/<sha256>/catalog.json` before changing the policy.
579
+ The stored witness includes the original path, byte digest and projected catalog
580
+ digest. Later hooks verify the retained bytes and permissions, so removal of the
581
+ original scratch copy cannot break discovery. Live native roots, configuration,
582
+ plugin files and trust still require their original witnesses; retention does
583
+ not refresh or exempt them. No artifact is inferred from a filename.
584
+
585
+ For an existing reviewed policy, plan one exact legacy witness migration:
586
+
587
+ ```bash
588
+ skills hook retain-review-artifact --kind codex-native-catalog \
589
+ --source /absolute/private/reviewed-catalog.json \
590
+ --expected-policy-sha256 <current-policy-byte-sha256> \
591
+ --expected-source-sha256 <original-reviewed-byte-sha256> --json
592
+ ```
593
+
594
+ Run from the same reviewed project directory; add `--apply` to execute that
595
+ guarded transaction. It requires the original bytes to exist and all current
596
+ bridge, discovery and trust checks to pass. Missing originals need exact recovery
597
+ first; this command never captures a replacement catalog or rehashes a changed
598
+ source. Apply preserves and reads back the old policy, leaves the original source
599
+ and session pins intact, and records retention lineage in the transaction
600
+ receipt. Existing sources without an explicit declaration keep their live-path
601
+ semantics. Immutable files left by a compensated transaction are retained and
602
+ may be reused only after exact verification.
603
+
563
604
  When `hook install` omits `--discovery-inputs`, it reuses an existing reviewed
564
605
  binding only after rechecking its sources, directory membership, configuration
565
606
  coverage, managed bridge and native trust. Unchanged reviews need no new input
@@ -2718,3 +2759,29 @@ capture as well, so the re-pinned review must bind the catalog another way, such
2718
2759
  as an exact `bytes` witness, until a reviewed version of this mode covers the
2719
2760
  key. There is no bypass, ignore list or relaxed mode. See
2720
2761
  [marketplace plugin entry witness](docs/plugin-admission.md#marketplace-plugin-entry-witness).
2762
+
2763
+
2764
+ `codex-settings-v5` explicitly projects only schema-valid string vectors at the
2765
+ document-root `tui.status_line` field, including empty, unknown and future display
2766
+ IDs, additions, removal and reordering. OpenAI Codex 0.162.1 declares this field
2767
+ as `Option<Vec<String>>`: its UI parser displays known items and ignores/warns
2768
+ about unknown strings, without executing commands or loading discovery inputs.
2769
+ There is no ID whitelist or entry-count cap; existing whole-file and parser
2770
+ resource guards still apply. Malformed values, nonstrings, profile/nested fields,
2771
+ other TUI fields and discovery controls remain bound. This verified upstream
2772
+ contract does not approve a different native consumer's interpretation.
2773
+ V5 retains V4's availability-count contract and V3's supported ordinary local MCP
2774
+ projection. Existing byte/V1/V2/V3/V4 reviews retain their exact meaning.
2775
+
2776
+ Capture with `skills hook witness --kind codex-settings-v5 --path <config.toml>`.
2777
+ Upgrade with `skills hook rebind-settings --agent codex --codex-witness-version 5
2778
+ --reviewed-preimage <preserved-config.toml> --expected-policy-sha256 <policy-hash>
2779
+ --expected-settings-sha256 <settings-hash>`. Review before adding `--apply`. The
2780
+ preserved config must first match its original digest under its original mode;
2781
+ all changes outside V5 refuse. The guarded upgrade changes policy only, preserves
2782
+ native settings, other witnesses and session pins, and revalidates before apply.
2783
+
2784
+
2785
+ Codex cache witnesses migrate separately through `skills hook rebind-cache --agent codex`. Preview requires the exact current policy and configuration SHA-256 values. Name each reviewed remote app-only parent with `--app-only-parent`; skill-bearing parents must already have enrolled qualified-name denies and semantic capability controls. The complete cache census refuses unknown parents, cache-member aliases, new skills, direct hooks selecting cache inputs, and changed app/MCP/receipt capabilities. Reviewed whole Codex root aliases keep their existing identity/CAS guards; hook selection through either the alias or canonical cache path is refused. Commands containing the direct `plugins/cache` selector are conservatively refused, including HOME, tilde and relative spellings; no shell evaluation is performed. App-only bootstrap verifies the old full manifest and receipt sources, then explicitly reviews current app capabilities; it does not claim those app bytes were historically witnessed.
2786
+
2787
+ Review the returned semantic cache digest, then repeat with `--expected-cache-witness-sha256 <digest> --apply`. The owning apply path preserves/readbacks the original policy, recomputes the whole plan, compares policy/config/cache preimages, writes only the Skills policy, and verifies the resulting consumer. Historical directory hashes and source rows remain retained as provenance; this command cannot reconstruct an unavailable old directory tree or waive an ancestor directory containing unrelated inputs. Equivalent version materializations and inert assets then leave the new Codex-specific witness unchanged. Every other discovery source, directory, settings witness, native control and session pin stays under its existing contract. Settings and cache upgrades remain independent; neither silently repairs drift in the other.