Skip to content

fix(skills): make kernel-ops frontmatter portable - #4

Open
FabioMalpezzi wants to merge 1 commit into
Pinperepette:mainfrom
FabioMalpezzi:fix/kernel-ops-skill-frontmatter
Open

fix(skills): make kernel-ops frontmatter portable#4
FabioMalpezzi wants to merge 1 commit into
Pinperepette:mainfrom
FabioMalpezzi:fix/kernel-ops-skill-frontmatter

Conversation

@FabioMalpezzi

Copy link
Copy Markdown
Contributor

Problema

Il frontmatter di kernel-ops/SKILL.md usa una descrizione YAML plain-style che contiene Esempi: seguito da valori tra virgolette. Pi e Codex segnalano un errore di parsing equivalente a:

Nested mappings are not allowed in compact mappings

Claude Code sembra invece accettare il file, verosimilmente grazie a un parsing più permissivo.

Correzione

Converte description in un folded block scalar YAML (>-), preservando integralmente il testo e rendendo il frontmatter portabile tra i diversi skill loader.

Verifica

  • npm test — passato
  • parsing YAML del frontmatter — passato
  • loader skill nativo di Pi — kernel-ops caricata senza diagnostiche

La compatibilità Claude non cambia semanticamente: il valore risultante di description resta una singola stringa.

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant