chore(packs): re-seal register packs (ISSUED_AT bump + missing seals)
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).
This commit is contained in:
parent
15d34bd2ca
commit
0fe907a700
16 changed files with 87 additions and 32 deletions
|
|
@ -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?"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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": {},
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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": {
|
||||
|
|
|
|||
25
packs/register/formal_v1.mastery_report.json
Normal file
25
packs/register/formal_v1.mastery_report.json
Normal file
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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?",
|
||||
""
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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": {
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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": {
|
||||
|
|
|
|||
24
packs/register/socratic_v1.mastery_report.json
Normal file
24
packs/register/socratic_v1.mastery_report.json
Normal file
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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": {
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Reference in a new issue