feat BREAKING ons feat/ons-operator-next-surfacing #2 / 3
aaronrene · 20 days ago · Aug 12, 2026 · Diff

feat(ons): ok next print-on-closeout (ONS-b)

Read-only paste extract for CURRENT NEXT; skill/rule + Copilot PRINT-NEXT; optional fail-open stop-hook template; seven-tier §ONS.12; BV pass.

sha256:0a9bbb60949ef5f1a33bfee414da7b54d490f870ea30cb0f0abeae90e9599648 sha
+169 ~25 −7 symbols
sha256:2d710bccfd638c905144d83b392907714a23b395288e4236408f489fc08d60fb snapshot
+169
symbols added
~25
symbols modified
−7
symbols removed
0
dead code introduced
Semantic Changes 201 symbols
~ cli/commands/next.py .py 23 symbols added
+ EXIT_NEXT_MALFORMED variable variable EXIT_NEXT_MALFORMED L21–21
+ _emit_error function function _emit_error L99–114
+ _emit_success function function _emit_success L80–96
+ _reject_lane_name function function _reject_lane_name L24–30
+ _resolved_lane_label function function _resolved_lane_label L33–37
+ CURRENT_NEXT_HEADING import import CURRENT_NEXT_HEADING L13–13
+ CliContext import import CliContext L9–9
+ ConfigError import import ConfigError L8–8
+ CurrentNextError import import CurrentNextError L13–13
+ CurrentNextResult import import CurrentNextResult L13–13
+ Namespace import import Namespace L5–5
+ annotations import import annotations L3–3
+ extract_current_next import import extract_current_next L13–13
+ format_config_error import import format_config_error L12–12
+ format_current_next import import format_current_next L13–13
+ is_within_repo import import is_within_repo L11–11
+ join_docs_rel import import join_docs_rel L10–10
+ living_doc_abs import import living_doc_abs L10–10
+ load_config import import load_config L7–7
+ resolve_config_path import import resolve_config_path L11–11
+ resolve_lane_docs import import resolve_lane_docs L7–7
+ resolve_repo_root import import resolve_repo_root L11–11
+ run_next_command function function run_next_command L40–77
~ cursor/hooks/README.md .md 3 symbols added
+ Optional Cursor stop hook — print NEXT (ONS) section Optional Cursor stop hook — print NEXT (ONS) L1–28
+ Behavior (frozen) section Behavior (frozen) L16–28
+ Enable (operator) section Enable (operator) L9–16
~ cursor/skills/print-next/SKILL.md .md 5 symbols added
+ Print NEXT (closeout) section Print NEXT (closeout) L9–39
+ Fast path section Fast path L21–29
+ code[bash] variable variable code[bash] L23–28
+ Not this command section Not this command L35–39
+ Source of truth order section Source of truth order L29–35
~ docs/PRINT-NEXT.md .md 9 symbols added
+ Print NEXT — portable closeout paste (any AI tool) section Print NEXT — portable closeout paste (any AI tool) L1–60
+ Fast path section Fast path L8–24
+ code variable variable code L20–23
+ code[bash] variable variable code[bash] L12–17
+ Paste-ready prompt (when skills are unavailable) section Paste-ready prompt (when skills are unavailable) L42–60
+ code variable variable code L44–60
+ Runtime map section Runtime map L34–42
+ table section table L36–41
+ Source of truth order section Source of truth order L24–34
+ _sha function function _sha L12–13
+ FIXTURES import import FIXTURES L9–9
+ Path import import Path L6–6
+ annotations import import annotations L3–3
+ git_status_runner import import git_status_runner L9–9
+ hashlib import import hashlib L5–5
+ kit_root import import kit_root L8–8
+ run_cli import import run_cli L9–9
+ write_config import import write_config L9–9
+ test_twice_identical_no_mutation function function test_twice_identical_no_mutation L16–45
~ tests/e2e/test_print_next_e2e.py .py 11 symbols added
+ NEW_BODY variable variable NEW_BODY L12–15
+ CURRENT_NEXT_HEADING import import CURRENT_NEXT_HEADING L9–9
+ FIXTURES import import FIXTURES L8–8
+ Path import import Path L5–5
+ annotations import import annotations L3–3
+ git_status_runner import import git_status_runner L8–8
+ kit_root import import kit_root L7–7
+ run_cli import import run_cli L8–8
+ seed_git_repo import import seed_git_repo L8–8
+ write_config import import write_config L8–8
+ test_e2e_new_fence_then_idempotent function function test_e2e_new_fence_then_idempotent L18–57
+ Overseer Handover — print-next fixture section Overseer Handover — print-next fixture L1–19
+ NEXT SESSION — ONS fixture section NEXT SESSION — ONS fixture L3–19
+ Paste-ready prompt — ONS fixture section Paste-ready prompt — ONS fixture L7–19
+ code[text] variable variable code[text] L9–19
+ _seed function function _seed L13–23
+ CURRENT_NEXT_HEADING import import CURRENT_NEXT_HEADING L10–10
+ EXIT_NEXT_MALFORMED import import EXIT_NEXT_MALFORMED L7–7
+ FIXTURES import import FIXTURES L9–9
+ Path import import Path L5–5
+ annotations import import annotations L3–3
+ git_status_runner import import git_status_runner L9–9
+ kit_root import import kit_root L8–8
+ run_cli import import run_cli L9–9
+ write_config import import write_config L9–9
+ test_malformed_exit_37 function function test_malformed_exit_37 L82–87
+ test_ok_next_exit_zero_heading_model function function test_ok_next_exit_zero_heading_model L26–36
+ test_print_next_all_lanes_exclusive function function test_print_next_all_lanes_exclusive L69–79
+ test_print_next_synonym_same_stdout function function test_print_next_synonym_same_stdout L39–53
+ test_print_next_write_exclusive function function test_print_next_write_exclusive L56–66
+ FIXTURES import import FIXTURES L9–9
+ Path import import Path L6–6
+ annotations import import annotations L3–3
+ git_status_runner import import git_status_runner L9–9
+ kit_root import import kit_root L8–8
+ run_cli import import run_cli L9–9
+ time import import time L5–5
+ write_config import import write_config L9–9
+ test_ok_next_under_two_seconds function function test_ok_next_under_two_seconds L12–26
+ HONESTY variable variable HONESTY L19–21
+ REQUIRED_SUBSTRINGS variable variable REQUIRED_SUBSTRINGS L11–17
+ FIXTURES import import FIXTURES L9–9
+ Path import import Path L6–6
+ annotations import import annotations L3–3
+ git_status_runner import import git_status_runner L9–9
+ json import import json L5–5
+ kit_root import import kit_root L8–8
+ run_cli import import run_cli L9–9
+ write_config import import write_config L9–9
+ test_config_outside_repo_exit_4 function function test_config_outside_repo_exit_4 L24–43
+ test_fake_secret_printed_as_data_not_executed function function test_fake_secret_printed_as_data_not_executed L98–114
+ test_git_only_zero_muse_argv function function test_git_only_zero_muse_argv L63–74
+ test_lane_path_escape_exit_2 function function test_lane_path_escape_exit_2 L46–60
+ test_print_next_doc_honesty_sentence function function test_print_next_doc_honesty_sentence L86–88
+ test_skill_rule_required_substrings function function test_skill_rule_required_substrings L77–83
+ test_stop_hook_fail_closed_false function function test_stop_hook_fail_closed_false L91–95
+ MARKER variable variable MARKER L10–10
+ PERF_BOUND_S variable variable PERF_BOUND_S L11–11
+ CurrentNextResult import import CurrentNextResult L8–8
+ Path import import Path L6–6
+ annotations import import annotations L3–3
+ extract_current_next import import extract_current_next L8–8
+ time import import time L5–5
+ test_stress_large_handover_fence_at_end function function test_stress_large_handover_fence_at_end L14–33
~ tests/unit/test_print_next.py .py 18 symbols added
+ VALID variable variable VALID L16–24
+ _write function function _write L27–31
+ CURRENT_NEXT_HEADING import import CURRENT_NEXT_HEADING L8–8
+ CurrentNextError import import CurrentNextError L8–8
+ CurrentNextResult import import CurrentNextResult L8–8
+ Path import import Path L5–5
+ annotations import import annotations L3–3
+ extract_current_next import import extract_current_next L8–8
+ extract_paste_fence_body import import extract_paste_fence_body L7–7
+ format_current_next import import format_current_next L8–8
+ test_current_next_heading_exact function function test_current_next_heading_exact L86–87
+ test_fence_empty function function test_fence_empty L70–75
+ test_fence_missing function function test_fence_missing L62–67
+ test_heading_missing_even_if_other_fence function function test_heading_missing_even_if_other_fence L54–59
+ test_missing_file function function test_missing_file L45–51
+ test_model_missing function function test_model_missing L78–83
+ test_reuses_extract_paste_fence_body function function test_reuses_extract_paste_fence_body L90–96
+ test_valid_handover_heading_and_body function function test_valid_handover_heading_and_body L34–42
~ tools/print_next/__init__.py .py 7 symbols added
+ __all__ variable variable __all__ L13–19
+ CURRENT_NEXT_HEADING import import CURRENT_NEXT_HEADING L5–5
+ CurrentNextError import import CurrentNextError L5–5
+ CurrentNextResult import import CurrentNextResult L5–5
+ annotations import import annotations L3–3
+ extract_current_next import import extract_current_next L5–5
+ format_current_next import import format_current_next L5–5
~ tools/print_next/extract.py .py 18 symbols added
+ CURRENT_NEXT_HEADING variable variable CURRENT_NEXT_HEADING L11–11
+ CurrentNextError class class CurrentNextError L45–55
+ message method method message L54–55
+ CurrentNextResult class class CurrentNextResult L35–41
+ FAIL_CLOSED_REASONS variable variable FAIL_CLOSED_REASONS L22–31
+ PASTE_HEADING variable variable PASTE_HEADING L13–13
+ REASON_FENCE_EMPTY variable variable REASON_FENCE_EMPTY L19–19
+ REASON_FENCE_MISSING variable variable REASON_FENCE_MISSING L18–18
+ REASON_HANDOVER_MISSING variable variable REASON_HANDOVER_MISSING L15–15
+ REASON_HANDOVER_UNREADABLE variable variable REASON_HANDOVER_UNREADABLE L16–16
+ REASON_HEADING_MISSING variable variable REASON_HEADING_MISSING L17–17
+ REASON_MODEL_MISSING variable variable REASON_MODEL_MISSING L20–20
+ extract_current_next function function extract_current_next L58–126
+ format_current_next function function format_current_next L129–137
+ Path import import Path L6–6
+ annotations import import annotations L3–3
+ dataclass class import dataclass L5–5
+ extract_paste_fence_body import import extract_paste_fence_body L8–8
~ AGENTS.md .md 1 symbol added, 1 symbol modified
+ Print NEXT on closeout section Print NEXT on closeout L61–67
~ cli/main.py .py 1 symbol added, 3 symbols modified
+ run_next_command import import run_next_command L37–37
~ main
~ cursor/README.md .md 2 symbols modified
~ docs/OVERSEER-HANDOVER.md .md 7 symbols added, 7 symbols removed, 4 symbols modified
NEXT SESSION — ONS-b Operator NEXT surfacing build section NEXT SESSION — ONS-b Operator NEXT surfacing build L11–70
Paste-ready prompt — ONS-b section Paste-ready prompt — ONS-b L37–70
code[text] variable variable code[text] L39–66
THE ONE NEXT STEP — Model: Auto section THE ONE NEXT STEP — Model: Auto L23–37
table section table L27–34
What just landed section What just landed L17–23
table section table L19–22
+ NEXT SESSION — ONS → main (land-a) section NEXT SESSION — ONS → main (land-a) L11–68
+ Paste-ready prompt — ONS → main (land-a) section Paste-ready prompt — ONS → main (land-a) L37–68
+ code[text] variable variable code[text] L39–64
+ THE ONE NEXT STEP — Model: Operator + Auto section THE ONE NEXT STEP — Model: Operator + Auto L23–37
+ table section table L27–34
+ What just landed section What just landed L17–23
+ table section table L19–22
~ table
~ docs/consumers/knowtation/OVERSEER-SETUP.md .md 1 symbol added, 1 symbol modified
+ Print NEXT on closeout section Print NEXT on closeout L40–45
~ docs/consumers/scooling/OVERSEER-SETUP.md .md 1 symbol added, 1 symbol modified
+ Print NEXT on closeout section Print NEXT on closeout L29–34
~ docs/consumers/videofactory/OVERSEER-SETUP.md .md 1 symbol added, 1 symbol modified

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:0a9bbb60949ef5f1a33bfee414da7b54d490f870ea30cb0f0abeae90e9599648 --body "your comment"