fix(skills): make kernel-ops frontmatter portable - #4
Open
FabioMalpezzi wants to merge 1 commit into
Open
Conversation
adalseno
pushed a commit
to adalseno/context-kernel
that referenced
this pull request
Aug 1, 2026
…tte di comprimere, non solo avvisa
Il canary sapeva scoprire che l'harness ignorava updatedToolOutput, ma la sua
unica reazione era AVVISARE: continuava a comprimere a vuoto giro dopo giro.
Se il contratto e' rotto, l'output pieno entra COMUNQUE nel contesto e i nostri
marker sono solo rumore in piu' — lavoro speso per niente. Ora la reazione
scala: dopo N violazioni NELLA STESSA sessione (CK_CANARY_DEGRADE_N, default 3)
la sessione passa a raw pass-through per il resto della sua vita.
Proprieta':
- PER-SESSIONE: l'id sessione e' unico, quindi il degrado non e' mai permanente
ne' contagioso tra sessioni; una sessione nuova riparte pulita.
- REVERSIBILE in-sessione: savings.py --reset-canary sblocca le sessioni
degradate (oltre a riconoscere i fallimenti storici), per quando il contratto
risulta ripristinato.
- SPENTO con CK_CANARY_DEGRADE_N=0 (torna il vecchio comportamento: solo avviso).
- Coerente con la carta: e' un RILASSAMENTO della compressione (come i tassi
appresi T5, mai una stretta), e non tocca il gate degli effimeri.
compress.py: CANARY_DEGRADE_N, _session_failures, canary_degraded(payload),
degrade deciso nel ramo di fallimento di canary_check (l'alert di degrado
sostituisce quello generico, piu' azionabile), gate in main() PRIMA di ogni
ramo di compressione (incluso delta/parcheggio). savings.py: --reset-canary
sblocca il degrado, canary_status riporta le sessioni degradate.
Verifica: suite 361 passed (era 356), +5 in TestCanaryAutoDegrade (Nesimo
fallimento -> degrade+flag; sotto soglia solo avvisa; sessione degradata ->
output comprimibile passa INTATTO; altra sessione non toccata; N=0 disattiva).
Smoke live end-to-end: 3a violazione -> AUTO-DEGRADE + degraded_sessions, poi
output grosso -> raw pass-through ({}). Carta 8/8 (charter-refresh ha
ri-ancorato da solo Pinperepette#4 :773->819 e #7 :1447->1504). README root+plugin
speculari: §5 (auto-degrade) + §10 (contratto harness) + descrizione plugin.
adalseno
pushed a commit
to adalseno/context-kernel
that referenced
this pull request
Aug 1, 2026
…a vede diff e codice Correzione di DIFETTO misurato (non feature): l'unico gap noto lasciato aperto dalla consolidazione. Le 3 degradazioni A/B erano tutte output Bash in cui il contenuto SEMBRA rumore ma E' il segnale, e la SIGNAL log-oriented (error/fail/warn) non lo riconosceva. Cosa: il ramo Bash di compress() ora usa _bash_signal invece della sola SIGNAL. Aggiunge due riconoscitori STRUTTURALI: - DIFF_STRUCT: header di hunk (@@ ... @@ func), diff --git, ---/+++ -> recupera funzione contenitore E numeri di riga (degradato Pinperepette#2, 'squash') - CODE_SIGNAL dietro un prefisso di grep (file:NN: / NN: / NN-) -> recupera le dichiarazioni di codice da grep/dump di simboli (degradato Pinperepette#1, ~40 nomi di funzione) La terza classe (continuita' numerica) era gia' dichiarata da _numeric_continuity. Mirato, non allarga i log ordinari: 'processing item 42 ok', '2024: server started', 'INFO ready' restano rumore. Contro-fattuale verificato: le righe grep/hunk erano False con la vecchia SIGNAL, True con _bash_signal. signal_preserving_truncate ora accetta un predicato (regex O callable) via _sig; il ramo codice (CODE_SIGNAL) e log (SIGNAL) invariati. Solo ALLARGA il segnale -> comprime meno, mai di piu' (coerente charter Pinperepette#4/#7). +5 test (2 predicato coi contro-fattuali, 1 non-allargamento, 2 end-to-end che recuperano le degradazioni nel mezzo). Suite 406 -> 411. README §10 + tabella: il ciclo si chiude, misurato -> corretto -> testato. Specchiati (charter Pinperepette#1). plugin.json 1.29.0 -> 1.29.1.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problema
Il frontmatter di
kernel-ops/SKILL.mdusa una descrizione YAML plain-style che contieneEsempi:seguito da valori tra virgolette. Pi e Codex segnalano un errore di parsing equivalente a:Claude Code sembra invece accettare il file, verosimilmente grazie a un parsing più permissivo.
Correzione
Converte
descriptionin un folded block scalar YAML (>-), preservando integralmente il testo e rendendo il frontmatter portabile tra i diversi skill loader.Verifica
npm test— passatokernel-opscaricata senza diagnosticheLa compatibilità Claude non cambia semanticamente: il valore risultante di
descriptionresta una singola stringa.