From 0fe907a700faca9a7690e06fabad78d932860d57 Mon Sep 17 00:00:00 2001 From: Shay Date: Wed, 20 May 2026 07:39:38 -0700 Subject: [PATCH] chore(packs): re-seal register packs (ISSUED_AT bump + missing seals) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Round-2 (PR #48) bumped ISSUED_AT in scripts/ratify_register_packs.py from 2026-05-19 → 2026-05-20 but didn't re-seal existing packs; also shipped formal_v1 and socratic_v1 with empty mastery_report_sha256 (no companion .mastery_report.json on disk). This commit: - Re-seals all 7 register packs against current ISSUED_AT. - Adds companion seal files for formal_v1 + socratic_v1 (now ratified). - Patches both ratify scripts to use ensure_ascii=False when writing pack/report files to disk — previous default mangled literal em-dashes to — escapes every time the script ran, producing churn. Canonical hash form unchanged (still ensure_ascii=True for stability). Cognition eval byte-identical (100/100/91.7/100). Register tour green (R5 + R6 invariants hold). --- packs/register/convivial_v1.json | 8 +++--- .../register/convivial_v1.mastery_report.json | 4 +-- packs/register/default_neutral_v1.json | 2 +- .../default_neutral_v1.mastery_report.json | 4 +-- packs/register/formal_v1.json | 2 +- packs/register/formal_v1.mastery_report.json | 25 +++++++++++++++++++ packs/register/pedagogical_v1.json | 16 ++++++------ .../pedagogical_v1.mastery_report.json | 4 +-- packs/register/precise_v1.json | 4 +-- packs/register/precise_v1.mastery_report.json | 4 +-- packs/register/socratic_v1.json | 2 +- .../register/socratic_v1.mastery_report.json | 24 ++++++++++++++++++ packs/register/terse_v1.json | 2 +- packs/register/terse_v1.mastery_report.json | 4 +-- scripts/ratify_anchor_lens_packs.py | 7 ++++-- scripts/ratify_register_packs.py | 7 ++++-- 16 files changed, 87 insertions(+), 32 deletions(-) create mode 100644 packs/register/formal_v1.mastery_report.json create mode 100644 packs/register/socratic_v1.mastery_report.json diff --git a/packs/register/convivial_v1.json b/packs/register/convivial_v1.json index fbf9a0e3..78a18353 100644 --- a/packs/register/convivial_v1.json +++ b/packs/register/convivial_v1.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "Warm, conversational register. Seeded openings and closings draw from small bounded buckets; depth follows the standard (3-domain) default. Variation is deterministic across (trace_hash, register_id, turn_idx). See ADR-0071.", "schema_version": "1.0.0", - "mastery_report_sha256": "1c1509fa4bc2aa71fbe3843f4cbc01c9c83fe0047dd4456a66a47a17a426df1c", + "mastery_report_sha256": "86baf0a9ee44f65bcce45ee83d42b1df563476e3efdadc9b3ac40f85caf14a7f", "display_name": "Convivial", "depth_preference": "standard", "realizer_overrides": { @@ -12,14 +12,14 @@ "discourse_markers": { "openings": [ "So,", - "Right \u2014", + "Right —", "OK," ], "transitions": [], "closings": [ "", - " \u2014 does that help?", - " \u2014 make sense?" + " — does that help?", + " — make sense?" ] } } diff --git a/packs/register/convivial_v1.mastery_report.json b/packs/register/convivial_v1.mastery_report.json index 76ab0987..92375e1c 100644 --- a/packs/register/convivial_v1.mastery_report.json +++ b/packs/register/convivial_v1.mastery_report.json @@ -14,11 +14,11 @@ "transitions_reserved": false }, "failure_reasons": [], - "issued_at": "2026-05-19T00:00:00Z", + "issued_at": "2026-05-20T00:00:00Z", "pack_source_sha256": "1d38450b67c55b4895662509aca774b10c198ddbe925ac2f6e2d6356b95adff3", "ratification_method": "seeded_variation_replay_equivalence", "ratified": true, "register_id": "convivial_v1", - "report_sha256": "1c1509fa4bc2aa71fbe3843f4cbc01c9c83fe0047dd4456a66a47a17a426df1c", + "report_sha256": "86baf0a9ee44f65bcce45ee83d42b1df563476e3efdadc9b3ac40f85caf14a7f", "schema_version": "1.0.0" } diff --git a/packs/register/default_neutral_v1.json b/packs/register/default_neutral_v1.json index 3629b72d..a795147d 100644 --- a/packs/register/default_neutral_v1.json +++ b/packs/register/default_neutral_v1.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "Default neutral register. Empty realizer overrides and empty discourse markers. Ratification gate is byte-identity with the unregistered realizer path. See ADR-0068.", "schema_version": "1.0.0", - "mastery_report_sha256": "1bc62bfc36e4b3edbeb3764b2523ac77d2b1e98ec4729aab7463299a117f7100", + "mastery_report_sha256": "83e5a7bd968189a548a3019429c33f95bad51150b04f4ffe01ecb015b914533d", "display_name": "Default neutral", "depth_preference": "standard", "realizer_overrides": {}, diff --git a/packs/register/default_neutral_v1.mastery_report.json b/packs/register/default_neutral_v1.mastery_report.json index ec20bc4a..47d07389 100644 --- a/packs/register/default_neutral_v1.mastery_report.json +++ b/packs/register/default_neutral_v1.mastery_report.json @@ -12,11 +12,11 @@ "transitions_reserved": false }, "failure_reasons": [], - "issued_at": "2026-05-19T00:00:00Z", + "issued_at": "2026-05-20T00:00:00Z", "pack_source_sha256": "380787ce83ef46498ef467bbb9e54c8f8b3574fd5b33c373cb3c7a74169155e3", "ratification_method": "byte_identity_null_lift", "ratified": true, "register_id": "default_neutral_v1", - "report_sha256": "1bc62bfc36e4b3edbeb3764b2523ac77d2b1e98ec4729aab7463299a117f7100", + "report_sha256": "83e5a7bd968189a548a3019429c33f95bad51150b04f4ffe01ecb015b914533d", "schema_version": "1.0.0" } diff --git a/packs/register/formal_v1.json b/packs/register/formal_v1.json index 177b27c0..d128d014 100644 --- a/packs/register/formal_v1.json +++ b/packs/register/formal_v1.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "Formal register. Standard depth with drop_provenance_tag=true and drop_articles=true. Suppresses the parenthetical meta-tag and indefinite/definite articles from gloss surface text, producing the most austere and technically precise output surface of the register pack family. Suitable for legal, technical, and academic output contexts. See ADR-0068, ADR-0070, R6.", "schema_version": "1.0.0", - "mastery_report_sha256": "", + "mastery_report_sha256": "52875b32b65103f7942b3ef44db981f1d7b3e73d5bc566cac0a236865b09a5a0", "display_name": "Formal", "depth_preference": "standard", "realizer_overrides": { diff --git a/packs/register/formal_v1.mastery_report.json b/packs/register/formal_v1.mastery_report.json new file mode 100644 index 00000000..02bddcf9 --- /dev/null +++ b/packs/register/formal_v1.mastery_report.json @@ -0,0 +1,25 @@ +{ + "evidence": { + "depth_preference": "standard", + "discourse_markers_empty": true, + "marker_bucket_sizes": { + "closings": 0, + "openings": 0, + "transitions": 0 + }, + "realizer_overrides_empty": false, + "realizer_overrides_keys": [ + "drop_articles", + "drop_provenance_tag" + ], + "transitions_reserved": false + }, + "failure_reasons": [], + "issued_at": "2026-05-20T00:00:00Z", + "pack_source_sha256": "1f8c25761e9e01c991fe1fafe8daff86c63899ea5d3c41c7022dab8c3a8ea40e", + "ratification_method": "known_key_overrides_invariant_grounding", + "ratified": true, + "register_id": "formal_v1", + "report_sha256": "52875b32b65103f7942b3ef44db981f1d7b3e73d5bc566cac0a236865b09a5a0", + "schema_version": "1.0.0" +} diff --git a/packs/register/pedagogical_v1.json b/packs/register/pedagogical_v1.json index 63d0b141..a6d5583d 100644 --- a/packs/register/pedagogical_v1.json +++ b/packs/register/pedagogical_v1.json @@ -1,9 +1,9 @@ { "register_id": "pedagogical_v1", "version": "1.0.0", - "description": "Pedagogical register. Uses the 'pedagogical' depth tier to expand disclosure across all available semantic domains, with append_semantic_domain_clause=true to anchor each gloss with full semantic domain context. Discourse markers scaffold Socratic progression \u2014 questions fold back to the learner, transitions move the inquiry forward. Variation is deterministic across (trace_hash, register_id, turn_idx). See ADR-0071, R6.", + "description": "Pedagogical register. Uses the 'pedagogical' depth tier to expand disclosure across all available semantic domains, with append_semantic_domain_clause=true to anchor each gloss with full semantic domain context. Discourse markers scaffold Socratic progression — questions fold back to the learner, transitions move the inquiry forward. Variation is deterministic across (trace_hash, register_id, turn_idx). See ADR-0071, R6.", "schema_version": "1.0.0", - "mastery_report_sha256": "96733f1244621e4951dcf01217f6394417bbdf3143657fedfb41677f8337fbf9", + "mastery_report_sha256": "1752f7c6c561998c83e225bf175b2347f6843a7bce8ee367235de3e040a72fa5", "display_name": "Pedagogical", "depth_preference": "pedagogical", "realizer_overrides": { @@ -11,20 +11,20 @@ }, "discourse_markers": { "openings": [ - "Let's think through this \u2014", + "Let's think through this —", "Consider:", - "Here's the core of it \u2014", + "Here's the core of it —", "" ], "transitions": [ - "Now, the key move is \u2014", + "Now, the key move is —", "Which raises the question:", "Notice that" ], "closings": [ - " \u2014 does that step make sense?", - " \u2014 what does that imply for you?", - " \u2014 where does that land?", + " — does that step make sense?", + " — what does that imply for you?", + " — where does that land?", "" ] } diff --git a/packs/register/pedagogical_v1.mastery_report.json b/packs/register/pedagogical_v1.mastery_report.json index 39ee813b..cf3f8535 100644 --- a/packs/register/pedagogical_v1.mastery_report.json +++ b/packs/register/pedagogical_v1.mastery_report.json @@ -14,11 +14,11 @@ "transitions_reserved": true }, "failure_reasons": [], - "issued_at": "2026-05-19T00:00:00Z", + "issued_at": "2026-05-20T00:00:00Z", "pack_source_sha256": "037a25e05f6f2b552615b7330b291186bcac5f5bb2ea3791ec34a93281cb9b58", "ratification_method": "seeded_variation_replay_equivalence", "ratified": true, "register_id": "pedagogical_v1", - "report_sha256": "96733f1244621e4951dcf01217f6394417bbdf3143657fedfb41677f8337fbf9", + "report_sha256": "1752f7c6c561998c83e225bf175b2347f6843a7bce8ee367235de3e040a72fa5", "schema_version": "1.0.0" } diff --git a/packs/register/precise_v1.json b/packs/register/precise_v1.json index fbee6439..252ba336 100644 --- a/packs/register/precise_v1.json +++ b/packs/register/precise_v1.json @@ -1,9 +1,9 @@ { "register_id": "precise_v1", "version": "1.0.0", - "description": "Precise register. Standard depth with disclosure_domain_count=2 and drop_provenance_tag=true. Exposes exactly two semantic domains (focused but not terse), and drops the parenthetical meta-tag from gloss output \u2014 giving formal, clean surface text. Occupies the focused/technical pole: more substantive than terse_v1 (count=1) but narrower than default_neutral_v1 (count=3, no tag suppression). See ADR-0068, ADR-0070, R6.", + "description": "Precise register. Standard depth with disclosure_domain_count=2 and drop_provenance_tag=true. Exposes exactly two semantic domains (focused but not terse), and drops the parenthetical meta-tag from gloss output — giving formal, clean surface text. Occupies the focused/technical pole: more substantive than terse_v1 (count=1) but narrower than default_neutral_v1 (count=3, no tag suppression). See ADR-0068, ADR-0070, R6.", "schema_version": "1.0.0", - "mastery_report_sha256": "35d37773282bce13be19c7e1228d1036048fa5c1c79b9f0506dd4909a0d176e4", + "mastery_report_sha256": "17e35dcbe695290bf157e1d91d7df56a938f79095338a3f7d2d2bbb924d85cf6", "display_name": "Precise", "depth_preference": "standard", "realizer_overrides": { diff --git a/packs/register/precise_v1.mastery_report.json b/packs/register/precise_v1.mastery_report.json index 569c4f1a..4221d1f6 100644 --- a/packs/register/precise_v1.mastery_report.json +++ b/packs/register/precise_v1.mastery_report.json @@ -15,11 +15,11 @@ "transitions_reserved": false }, "failure_reasons": [], - "issued_at": "2026-05-19T00:00:00Z", + "issued_at": "2026-05-20T00:00:00Z", "pack_source_sha256": "36deccbca04a9f1afa84ae76e01842ffd2ff324a52ed5f1a8275d7995a544ad2", "ratification_method": "known_key_overrides_invariant_grounding", "ratified": true, "register_id": "precise_v1", - "report_sha256": "35d37773282bce13be19c7e1228d1036048fa5c1c79b9f0506dd4909a0d176e4", + "report_sha256": "17e35dcbe695290bf157e1d91d7df56a938f79095338a3f7d2d2bbb924d85cf6", "schema_version": "1.0.0" } diff --git a/packs/register/socratic_v1.json b/packs/register/socratic_v1.json index bb134f98..d034e597 100644 --- a/packs/register/socratic_v1.json +++ b/packs/register/socratic_v1.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "Socratic register. Pedagogical depth with append_semantic_domain_clause=true. Discourse markers are question-oriented: openings pose the inquiry, transitions surface the dialectical move, closings return the question to the interlocutor. Variation is deterministic across (trace_hash, register_id, turn_idx). Distinct from pedagogical_v1: no declarative scaffolding — every marker is interrogative. See ADR-0068, ADR-0071, R6.", "schema_version": "1.0.0", - "mastery_report_sha256": "", + "mastery_report_sha256": "be0c983aa894aeaacffd0809d617ea67f884aee448019311d8ec85cb80af03b4", "display_name": "Socratic", "depth_preference": "pedagogical", "realizer_overrides": { diff --git a/packs/register/socratic_v1.mastery_report.json b/packs/register/socratic_v1.mastery_report.json new file mode 100644 index 00000000..b2ed4d47 --- /dev/null +++ b/packs/register/socratic_v1.mastery_report.json @@ -0,0 +1,24 @@ +{ + "evidence": { + "depth_preference": "pedagogical", + "discourse_markers_empty": false, + "marker_bucket_sizes": { + "closings": 4, + "openings": 4, + "transitions": 3 + }, + "realizer_overrides_empty": false, + "realizer_overrides_keys": [ + "append_semantic_domain_clause" + ], + "transitions_reserved": true + }, + "failure_reasons": [], + "issued_at": "2026-05-20T00:00:00Z", + "pack_source_sha256": "856041fe69a71bbbef24efef372b72f94227ab89ad8283525cadfbff8d54d0f5", + "ratification_method": "seeded_variation_replay_equivalence", + "ratified": true, + "register_id": "socratic_v1", + "report_sha256": "be0c983aa894aeaacffd0809d617ea67f884aee448019311d8ec85cb80af03b4", + "schema_version": "1.0.0" +} diff --git a/packs/register/terse_v1.json b/packs/register/terse_v1.json index e0f294b6..791528d2 100644 --- a/packs/register/terse_v1.json +++ b/packs/register/terse_v1.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "Terse register. Compresses without-gloss disclosure to one semantic domain. Grounding source and trace hash are invariant against default_neutral_v1; only surface wording varies. See ADR-0070.", "schema_version": "1.0.0", - "mastery_report_sha256": "16c9be145e954f8adff01f37219c46059d65dc473de1f6e90f8b63acc5c7a862", + "mastery_report_sha256": "b31baad034cdcbbaa77016b711b4ebce8651170752fa1a250a9b467d59354199", "display_name": "Terse", "depth_preference": "terse", "realizer_overrides": { diff --git a/packs/register/terse_v1.mastery_report.json b/packs/register/terse_v1.mastery_report.json index a7b8004b..063bd002 100644 --- a/packs/register/terse_v1.mastery_report.json +++ b/packs/register/terse_v1.mastery_report.json @@ -17,11 +17,11 @@ "transitions_reserved": false }, "failure_reasons": [], - "issued_at": "2026-05-19T00:00:00Z", + "issued_at": "2026-05-20T00:00:00Z", "pack_source_sha256": "b95b886701a9193ba96ce45984c22c1ed5e588b572b05587905d3e6a884c05bc", "ratification_method": "known_key_overrides_invariant_grounding", "ratified": true, "register_id": "terse_v1", - "report_sha256": "16c9be145e954f8adff01f37219c46059d65dc473de1f6e90f8b63acc5c7a862", + "report_sha256": "b31baad034cdcbbaa77016b711b4ebce8651170752fa1a250a9b467d59354199", "schema_version": "1.0.0" } diff --git a/scripts/ratify_anchor_lens_packs.py b/scripts/ratify_anchor_lens_packs.py index bc93aec3..99c53ecf 100644 --- a/scripts/ratify_anchor_lens_packs.py +++ b/scripts/ratify_anchor_lens_packs.py @@ -161,7 +161,9 @@ def main() -> int: return 1 report_path = PACKS_DIR / f"{lens_id}.mastery_report.json" - report_text = json.dumps(report_dict, indent=2, sort_keys=True) + "\n" + report_text = json.dumps( + report_dict, indent=2, sort_keys=True, ensure_ascii=False, + ) + "\n" prior_report = ( report_path.read_text(encoding="utf-8") if report_path.is_file() @@ -180,7 +182,8 @@ def main() -> int: skipped += 1 continue pack_path.write_text( - json.dumps(pack_after, indent=2) + "\n", encoding="utf-8" + json.dumps(pack_after, indent=2, ensure_ascii=False) + "\n", + encoding="utf-8", ) report_path.write_text(report_text, encoding="utf-8") print( diff --git a/scripts/ratify_register_packs.py b/scripts/ratify_register_packs.py index 05c5f6b5..1dc64862 100644 --- a/scripts/ratify_register_packs.py +++ b/scripts/ratify_register_packs.py @@ -274,7 +274,9 @@ def main() -> int: return 1 report_path = PACKS_DIR / f"{register_id}.mastery_report.json" - report_text = json.dumps(report_dict, indent=2, sort_keys=True) + "\n" + report_text = json.dumps( + report_dict, indent=2, sort_keys=True, ensure_ascii=False, + ) + "\n" prior_report = ( report_path.read_text(encoding="utf-8") if report_path.is_file() @@ -293,7 +295,8 @@ def main() -> int: skipped += 1 continue pack_path.write_text( - json.dumps(pack_after, indent=2) + "\n", encoding="utf-8", + json.dumps(pack_after, indent=2, ensure_ascii=False) + "\n", + encoding="utf-8", ) report_path.write_text(report_text, encoding="utf-8") print(