Skip to content

feat(bin): give supervision branch notes a one-line, question-first format - #2

Merged
netbrain merged 5 commits into
mainfrom
fm/fm-branch-note-format
Sep 30, 2026
Merged

netbrain merged 5 commits into
mainfrom
fm/fm-branch-note-format

Conversation

@netbrain

Copy link
Copy Markdown
Owner

Intent

Asked "Should the short monitoring notes (the supervision branch's ⛵ lines) follow the same rules: one line, no restated reasons?" the answer was "1a" (yes), and asked whether to make that hold in every session through a small firstmate change on a PR to the captain's fork, the answer was again "1a" (yes). The captain's message format, in his words: "'What i need from you' should be more important, and should be presented as questions with options on how to solve them so i can do 1a 2b etc." Firstmate's summary of the rules he agreed for notes: one line per note, lead with the task in plain words and the outcome, no restated reasons he already knows, no repeated questions, no self-commentary; anything that needs him leads with the question and lettered options.

What Changed

  • Adds a # Note style section to bin/fm-branch-prompt.sh: a routine summary is one line (task in plain words, then outcome), with no restated reasons, repeated questions, self-commentary, or filler; a summary needing the captain opens with the question, numbered from "1." within that summary and its options lettered so the captain answers "1a". A summary that logs an action taken under the away instructions keeps its full "per your away instructions:" log line, which opens the summary with the question following it.
  • Reworks step 4 of the handling sequence to require the summary be written per the new section instead of the previous "one-or-two-sentence summary" wording.
  • Adds cross-references pointing at the new section from AGENTS.md (escalation form) and docs/pi-supervision-branch.md (which prompt section owns the summary format), and extends the byte-stability test in tests/fm-branch-supervision.test.sh to assert the section's text is present in the rendered prompt.

Risk Assessment

⚠️ Medium: Endringen er ni linjer prompt-prosa pluss én assertion på generert prompt-utdata, men den nye "every summary"-regelen kolliderer med away-posture-loggekravet på linje 128 og trenger forfatterens presedensavgjørelse.

Testing

  • ⏭️ Test - skipped

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

⚠️ **Review** - 10 issues (5 warnings, 5 infos)
  • ⚠️ bin/fm-branch-prompt.sh:97 - Den nye "Note style"-regelen gjelder "every summary" og forbyr å gjenta grunner kapteinen allerede kjenner (bin/fm-branch-prompt.sh:95-97), men away-posture-regelen på bin/fm-branch-prompt.sh:128 krever at hvert utført tiltak logges i event-summaryen "opening with 'per your away instructions:' and naming the sentence you acted on" - altså nettopp å gjenta kapteinens egne ord. Ingen av de to stedene markerer presedens, så modellen får to motstridende krav for samme felt i away-posture, og valget avgjør om return-brief faktisk kan gjøre rede for hvert tiltak. Forfatteren må bestemme presedensen (f.eks. eksplisitt unnta away-loggingen fra "no restated reasons"); dette er en intensjonsavgjørelse, ikke en mekanisk retting.
  • ℹ️ bin/fm-branch-prompt.sh:54 - Steg 4 sier nå "a summary written to the &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;Note style&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; section below" (bin/fm-branch-prompt.sh:54). "written to" leser som å skrive summaryen inn i seksjonen; meningen er "written per/according to the Note style section". Instruksjonssemantikk i en generert prompt, så ordlyden er produktatferd og bør rettes av forfatteren.

🔧 Fix applied.
5 issues (2 warnings, 3 infos) still open:

  • ⚠️ bin/fm-branch-prompt.sh:97 - Den nye "Note style"-regelen gjelder "every summary" og forbyr å gjenta grunner kapteinen allerede kjenner (bin/fm-branch-prompt.sh:95-97), men away-posture-regelen på bin/fm-branch-prompt.sh:128 krever at hvert utført tiltak logges i event-summaryen "opening with 'per your away instructions:' and naming the sentence you acted on" - altså nettopp å gjenta kapteinens egne ord. Ingen av de to stedene markerer presedens, så modellen får to motstridende krav for samme felt i away-posture, og valget avgjør om return-brief faktisk kan gjøre rede for hvert tiltak. Forfatteren må bestemme presedensen (f.eks. eksplisitt unnta away-loggingen fra "no restated reasons"); dette er en intensjonsavgjørelse, ikke en mekanisk retting.
  • ℹ️ bin/fm-branch-prompt.sh:54 - Steg 4 sier nå "a summary written to the &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;Note style&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; section below" (bin/fm-branch-prompt.sh:54). "written to" leser som å skrive summaryen inn i seksjonen; meningen er "written per/according to the Note style section". Instruksjonssemantikk i en generert prompt, så ordlyden er produktatferd og bør rettes av forfatteren.
  • ⚠️ bin/fm-branch-prompt.sh:99 - Den nye Note style-regelen på bin/fm-branch-prompt.sh:99 krever at en captain-verdict-summary "leads with the question, then lettered options", mens away-posture-regelen på bin/fm-branch-prompt.sh:129 krever at samme felt åpner med "per your away instructions:" og navngir setningen. bin/fm-branch-prompt.sh:54 tillater eksakt én rapport per håndtert hendelse, så de to kan ikke splittes i to summaries. Konkret sekvens: away-record med to setninger ("merge the auth PR when green, and spin up the docs work if you can figure out the scope"); grenen merger den grønne PR-en (krever away-loggen fra :129) og holder på den tvetydige andre setningen, som bin/fm-branch-prompt.sh:127 sender som verdict captain "naming the sentence" - dermed en summary som både må åpne med away-loggen og med spørsmålet. Ingen av stedene markerer presedens. Søsken-steder for samme invariant: bin/fm-branch-prompt.sh:129 (away action log åpner summaryen) og bin/fm-branch-prompt.sh:127 (hold-on-doubt navngir setningen og går som captain-verdict). Dette er samme klasse som runde 1s funn note-style-vs-away-logging: fix-runden f6414fc løste brevity-aksen via den nye setningen på linje 98, men lot rekkefølge-aksen stå igjen. Remedien er en presedenssetning (f.eks. at away-loggen åpner og spørsmålet med bokstavalternativer følger på neste linje), og det er en intensjonsavgjørelse om captain-vendt format, ikke en mekanisk retting.
  • ℹ️ tests/fm-branch-supervision.test.sh:68 - Den opprinnelige commiten asserterte reglene den innførte (tests/fm-branch-supervision.test.sh:68-71 dekker linje 93, 96, 97 og 99 i prompten), men fix-runden f6414fc la til unntakssetningen på bin/fm-branch-prompt.sh:98 uten å utvide assertionen. Testen ville derfor fortsatt passere om nettopp den setningen som løste runde 1s funn ble fjernet igjen. Prompten er den navngitte, genererte tekstkontrakten som denne testen allerede eier, så en tilføyelse av frasen "per your away instructions:"-unntaket i det samme case-mønsteret er mekanisk og endrer ingen produktatferd.
  • ℹ️ docs/pi-supervision-branch.md:440 - docs/pi-supervision-branch.md "Ownership and verdict rules" lister eksplisitt hvilke prompt-seksjoner som eier hvilke regler ("Verdict: routine or captain" på ~linje 438, "PR identity: copy or abstain" på ~linje 443). Den nye "Note style"-seksjonen eier nå summary-formatet for hver rapport, inkludert away-unntaket, men er ikke nevnt der. Dokumentet er ikke endret i denne changen, så dette er en konsistensgap mellom prompt og dokumentasjon, ikke en defekt i koden. Hvorvidt seksjonen skal dokumenteres er forfatterens valg.

🔧 Fix applied.
5 issues (4 warnings, 1 info) still open:

  • ⚠️ bin/fm-branch-prompt.sh:97 - Den nye "Note style"-regelen gjelder "every summary" og forbyr å gjenta grunner kapteinen allerede kjenner (bin/fm-branch-prompt.sh:95-97), men away-posture-regelen på bin/fm-branch-prompt.sh:128 krever at hvert utført tiltak logges i event-summaryen "opening with 'per your away instructions:' and naming the sentence you acted on" - altså nettopp å gjenta kapteinens egne ord. Ingen av de to stedene markerer presedens, så modellen får to motstridende krav for samme felt i away-posture, og valget avgjør om return-brief faktisk kan gjøre rede for hvert tiltak. Forfatteren må bestemme presedensen (f.eks. eksplisitt unnta away-loggingen fra "no restated reasons"); dette er en intensjonsavgjørelse, ikke en mekanisk retting.
  • ℹ️ bin/fm-branch-prompt.sh:54 - Steg 4 sier nå "a summary written to the &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;Note style&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; section below" (bin/fm-branch-prompt.sh:54). "written to" leser som å skrive summaryen inn i seksjonen; meningen er "written per/according to the Note style section". Instruksjonssemantikk i en generert prompt, så ordlyden er produktatferd og bør rettes av forfatteren.
  • ⚠️ bin/fm-branch-prompt.sh:99 - Den nye Note style-regelen på bin/fm-branch-prompt.sh:99 krever at en captain-verdict-summary "leads with the question, then lettered options", mens away-posture-regelen på bin/fm-branch-prompt.sh:129 krever at samme felt åpner med "per your away instructions:" og navngir setningen. bin/fm-branch-prompt.sh:54 tillater eksakt én rapport per håndtert hendelse, så de to kan ikke splittes i to summaries. Konkret sekvens: away-record med to setninger ("merge the auth PR when green, and spin up the docs work if you can figure out the scope"); grenen merger den grønne PR-en (krever away-loggen fra :129) og holder på den tvetydige andre setningen, som bin/fm-branch-prompt.sh:127 sender som verdict captain "naming the sentence" - dermed en summary som både må åpne med away-loggen og med spørsmålet. Ingen av stedene markerer presedens. Søsken-steder for samme invariant: bin/fm-branch-prompt.sh:129 (away action log åpner summaryen) og bin/fm-branch-prompt.sh:127 (hold-on-doubt navngir setningen og går som captain-verdict). Dette er samme klasse som runde 1s funn note-style-vs-away-logging: fix-runden f6414fc løste brevity-aksen via den nye setningen på linje 98, men lot rekkefølge-aksen stå igjen. Remedien er en presedenssetning (f.eks. at away-loggen åpner og spørsmålet med bokstavalternativer følger på neste linje), og det er en intensjonsavgjørelse om captain-vendt format, ikke en mekanisk retting.
  • ⚠️ bin/fm-branch-prompt.sh:98 - Fix-runden e605fbe innførte presedenssetningen på bin/fm-branch-prompt.sh:98 med antecedenten "An outcome summary the away-posture rules require to name a captain sentence". Den er bredere enn både runde 1s og runde 2s brukerinstruks, som begge scopet unntaket til en summary som logger en handling utført under away-instruksene. To away-regler krever at en captain-setning navngis: bin/fm-branch-prompt.sh:129 (action log, handling utført) og bin/fm-branch-prompt.sh:127 (hold on doubt, ingen handling utført). Konkret sekvens innenfor tilsiktet bruk: away-record sier "spin up the docs work if you can figure out the scope"; grenen kan ikke handle med trygghet, gjør ingenting, og rapporterer verdict captain og navngir setningen per :127. Da treffer :98 antecedenten, så (a) konsekventen "that log line opens the summary" er uoppfyllelig fordi det ikke finnes noen "per your away instructions:"-linje, og (b) siste setning på :98 fritar denne summaryen fra one-line- og no-restated-reasons-reglene, samtidig som "Otherwise" som åpner bin/fm-branch-prompt.sh:99 slår av lead-with-the-question-regelen for nettopp denne saken. Resultatet er en captain-vendt note som verken er kort eller åpner med spørsmålet, i direkte strid med intent-kriteriet "anything that needs him leads with the question and lettered options". Forfatterens egen smalere formulering står allerede i docs/pi-supervision-branch.md:443 ("when the away-posture rules require the &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;per your away instructions:&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; log line"), så prompten har overskredet dokumentasjonen. Dette er ikke runde 1s note-style-vs-away-logging (brevity-aksen, som brukeren valgte å ignorere): dette er antecedentens scope pluss "Otherwise"-porten på :99. Remedien er å snevre e605fbes setning tilbake til den minimale, autoriserte formen, altså knytte den til en handling utført under away-instruksene i stedet for til enhver away-regel som navngir en setning, ikke å legge til mer maskineri. Søsken-steder for samme invariant: bin/fm-branch-prompt.sh:99 ("Otherwise" porter lead-with-question), bin/fm-branch-prompt.sh:127 (hold-on-doubt, saken som feilaktig sveipes inn), docs/pi-supervision-branch.md:443 (har den smalere formen og må holdes i synk), tests/fm-branch-supervision.test.sh:68 (runde 2s assertion pinner konsekventen men aldri antecedenten, så testen passerer med scopet feil).
  • ⚠️ bin/fm-branch-prompt.sh:99 - bin/fm-branch-prompt.sh:99 sier "lettered options the captain can answer with shorthand like &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;1a&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;", men eksempelet den gir emitterer kun bokstaver uten nummer: "Merge the PR now? a) yes b) wait for review." Regelen forteller aldri at spørsmålene skal nummereres, så shorthanden regelen selv krever har ingen antecedent. Intent-kriteriet er kapteinens egne ord: "should be presented as questions with options on how to solve them so i can do 1a 2b etc." Konkret sekvens: away-record med to setninger der begge holdes på tvil (:127) rapporteres i én summary, siden bin/fm-branch-prompt.sh:54 tillater eksakt én rapport per håndtert hendelse. Summaryen får da to unummererte bokstavlister, og "2b" er ikke besvarbart. Remedien er å la regelen kreve nummererte spørsmål med bokstavalternativer ("1. Merge the PR now? a) yes b) wait"), men det endrer det captain-vendte formatet og er forfatterens valg. Søsken-sted for samme invariant: docs/pi-supervision-branch.md:443 ("leads with the question and its lettered options" nevner heller ikke nummerering).

🔧 Fix applied.
8 issues (5 warnings, 3 infos) still open:

  • ⚠️ bin/fm-branch-prompt.sh:97 - Den nye "Note style"-regelen gjelder "every summary" og forbyr å gjenta grunner kapteinen allerede kjenner (bin/fm-branch-prompt.sh:95-97), men away-posture-regelen på bin/fm-branch-prompt.sh:128 krever at hvert utført tiltak logges i event-summaryen "opening with 'per your away instructions:' and naming the sentence you acted on" - altså nettopp å gjenta kapteinens egne ord. Ingen av de to stedene markerer presedens, så modellen får to motstridende krav for samme felt i away-posture, og valget avgjør om return-brief faktisk kan gjøre rede for hvert tiltak. Forfatteren må bestemme presedensen (f.eks. eksplisitt unnta away-loggingen fra "no restated reasons"); dette er en intensjonsavgjørelse, ikke en mekanisk retting.
  • ℹ️ bin/fm-branch-prompt.sh:54 - Steg 4 sier nå "a summary written to the &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;Note style&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; section below" (bin/fm-branch-prompt.sh:54). "written to" leser som å skrive summaryen inn i seksjonen; meningen er "written per/according to the Note style section". Instruksjonssemantikk i en generert prompt, så ordlyden er produktatferd og bør rettes av forfatteren.
  • ⚠️ bin/fm-branch-prompt.sh:99 - Den nye Note style-regelen på bin/fm-branch-prompt.sh:99 krever at en captain-verdict-summary "leads with the question, then lettered options", mens away-posture-regelen på bin/fm-branch-prompt.sh:129 krever at samme felt åpner med "per your away instructions:" og navngir setningen. bin/fm-branch-prompt.sh:54 tillater eksakt én rapport per håndtert hendelse, så de to kan ikke splittes i to summaries. Konkret sekvens: away-record med to setninger ("merge the auth PR when green, and spin up the docs work if you can figure out the scope"); grenen merger den grønne PR-en (krever away-loggen fra :129) og holder på den tvetydige andre setningen, som bin/fm-branch-prompt.sh:127 sender som verdict captain "naming the sentence" - dermed en summary som både må åpne med away-loggen og med spørsmålet. Ingen av stedene markerer presedens. Søsken-steder for samme invariant: bin/fm-branch-prompt.sh:129 (away action log åpner summaryen) og bin/fm-branch-prompt.sh:127 (hold-on-doubt navngir setningen og går som captain-verdict). Dette er samme klasse som runde 1s funn note-style-vs-away-logging: fix-runden f6414fc løste brevity-aksen via den nye setningen på linje 98, men lot rekkefølge-aksen stå igjen. Remedien er en presedenssetning (f.eks. at away-loggen åpner og spørsmålet med bokstavalternativer følger på neste linje), og det er en intensjonsavgjørelse om captain-vendt format, ikke en mekanisk retting.
  • ⚠️ bin/fm-branch-prompt.sh:98 - Fix-runden e605fbe innførte presedenssetningen på bin/fm-branch-prompt.sh:98 med antecedenten "An outcome summary the away-posture rules require to name a captain sentence". Den er bredere enn både runde 1s og runde 2s brukerinstruks, som begge scopet unntaket til en summary som logger en handling utført under away-instruksene. To away-regler krever at en captain-setning navngis: bin/fm-branch-prompt.sh:129 (action log, handling utført) og bin/fm-branch-prompt.sh:127 (hold on doubt, ingen handling utført). Konkret sekvens innenfor tilsiktet bruk: away-record sier "spin up the docs work if you can figure out the scope"; grenen kan ikke handle med trygghet, gjør ingenting, og rapporterer verdict captain og navngir setningen per :127. Da treffer :98 antecedenten, så (a) konsekventen "that log line opens the summary" er uoppfyllelig fordi det ikke finnes noen "per your away instructions:"-linje, og (b) siste setning på :98 fritar denne summaryen fra one-line- og no-restated-reasons-reglene, samtidig som "Otherwise" som åpner bin/fm-branch-prompt.sh:99 slår av lead-with-the-question-regelen for nettopp denne saken. Resultatet er en captain-vendt note som verken er kort eller åpner med spørsmålet, i direkte strid med intent-kriteriet "anything that needs him leads with the question and lettered options". Forfatterens egen smalere formulering står allerede i docs/pi-supervision-branch.md:443 ("when the away-posture rules require the &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;per your away instructions:&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; log line"), så prompten har overskredet dokumentasjonen. Dette er ikke runde 1s note-style-vs-away-logging (brevity-aksen, som brukeren valgte å ignorere): dette er antecedentens scope pluss "Otherwise"-porten på :99. Remedien er å snevre e605fbes setning tilbake til den minimale, autoriserte formen, altså knytte den til en handling utført under away-instruksene i stedet for til enhver away-regel som navngir en setning, ikke å legge til mer maskineri. Søsken-steder for samme invariant: bin/fm-branch-prompt.sh:99 ("Otherwise" porter lead-with-question), bin/fm-branch-prompt.sh:127 (hold-on-doubt, saken som feilaktig sveipes inn), docs/pi-supervision-branch.md:443 (har den smalere formen og må holdes i synk), tests/fm-branch-supervision.test.sh:68 (runde 2s assertion pinner konsekventen men aldri antecedenten, så testen passerer med scopet feil).
  • ⚠️ bin/fm-branch-prompt.sh:99 - bin/fm-branch-prompt.sh:99 sier "lettered options the captain can answer with shorthand like &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;1a&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;", men eksempelet den gir emitterer kun bokstaver uten nummer: "Merge the PR now? a) yes b) wait for review." Regelen forteller aldri at spørsmålene skal nummereres, så shorthanden regelen selv krever har ingen antecedent. Intent-kriteriet er kapteinens egne ord: "should be presented as questions with options on how to solve them so i can do 1a 2b etc." Konkret sekvens: away-record med to setninger der begge holdes på tvil (:127) rapporteres i én summary, siden bin/fm-branch-prompt.sh:54 tillater eksakt én rapport per håndtert hendelse. Summaryen får da to unummererte bokstavlister, og "2b" er ikke besvarbart. Remedien er å la regelen kreve nummererte spørsmål med bokstavalternativer ("1. Merge the PR now? a) yes b) wait"), men det endrer det captain-vendte formatet og er forfatterens valg. Søsken-sted for samme invariant: docs/pi-supervision-branch.md:443 ("leads with the question and its lettered options" nevner heller ikke nummerering).
  • ⚠️ bin/fm-branch-prompt.sh:100 - Nummereringen som cebe46c innførte er scopet til én summary, ikke til det kapteinen faktisk leser. Hunk: "Number each question and letter its options, so the captain answers with shorthand like &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;1a&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;, for example &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;1. Merge the PR now? a) yes b) wait for review.&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;; a second question in the same summary is numbered &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;2.&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; so &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;2b&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; answers it." Intent-kriteriet er kapteinens egne ord: "should be presented as questions with options on how to solve them so i can do 1a 2b etc." Konkret sekvens innenfor tilsiktet bruk: away-posture, to wakes etter hverandre eskalerer hver sin sak (f.eks. en rød PR holdt per bin/fm-branch-prompt.sh:83 og en tvilsom setning holdt per bin/fm-branch-prompt.sh:128). bin/fm-branch-prompt.sh:54 tillater eksakt én rapport per håndtert hendelse, så dette blir to separate summaries, og hver av dem starter på "1." per :100. Kapteinen ser da to notater som begge stiller spørsmål "1." med alternativer a)/b), og den bare shorthanden "1a 2b" treffer ikke: det finnes ingen "2." på tvers av notatene. Hver visible outcome rendres verbatim med sin egen summary (.pi/extensions/fm-branch-supervision.ts:2300 og :990), så prompten er den eneste stedet formatet bestemmes. Merk: notatene bærer allerede et per-notat [seq N] i renderen på :2300, så adressering finnes; det som mangler er at nummereringsregelen knyttes til den, eller at MAIN renummererer. Remedien er en avgjørelse om kaptein-vendt format (per-notat-nummer, seq-relativ adressering, eller MAIN-side renummerering), ikke en mekanisk retting, derfor ask-user. Søsken-steder for samme invariant, som én fix-runde bør lukke samtidig: tests/fm-branch-supervision.test.sh:69 (mønsteret stopper rett før "; a second question in the same summary is numbered &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;2.&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;", så assertionen passerer selv om den klausulen slettes, altså pinner runden aldri sin egen nye regel) og docs/pi-supervision-branch.md:443 (sier "numbered, with its options lettered so &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;1a&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; answers it" og utelater også flerspørsmåls-tilfellet, så dokumentasjonen bestemmer ikke scopet).
  • ℹ️ bin/fm-branch-prompt.sh:99 - AGENTS.md:527 eier kaptein-vendt eskaleringsform for hele huset: "Lead directly with concrete evidence, then the consequence, options when applicable, and a recommendation." Den nye regelen på bin/fm-branch-prompt.sh:99 krever motsatt rekkefølge for branchens captain-verdict-notater: "Otherwise a captain-verdict summary that needs the captain's word opens with the question itself." User intent autoriserer eksplisitt question-first ("anything that needs him leads with the question and lettered options"), så prompten er riktig og AGENTS.md er det som nå henger etter. Branch-notatene er kaptein-synlige entries (.pi/extensions/fm-branch-supervision.ts:2300), så begge dokumentene beskriver samme flate. Ingen defekt i koden; spørsmålet er om AGENTS.md seksjon 9 skal peke til branchens "Note style" som unntak, og det er forfatterens valg. Dette er samme konsistensklasse som runde 2s docs-section-ownership-missing-note-style, som brukeren valgte å fikse; her er det AGENTS.md, ikke docs/pi-supervision-branch.md.
  • ℹ️ bin/fm-branch-prompt.sh:98 - Intent sier "anything that needs him leads with the question and lettered options", mens bin/fm-branch-prompt.sh:98 lar "per your away instructions:"-loggen åpne og spørsmålet følge etter for away-action-log-summaries. Det er et bevisst avvik brukeren selv dirigerte gjennom fix-rundene i runde 2 og runde 3 (away-exemption-antecedent-too-broad ble valgt til fiks nettopp for å beholde unntaket i smalere form), og cebe46c har nå snevret antecedenten til faktisk utført handling. Flagges kun for sporbarhet; ingen handling.

🔧 Fix applied.
10 issues (5 warnings, 5 infos) still open:

  • ⚠️ bin/fm-branch-prompt.sh:97 - Den nye "Note style"-regelen gjelder "every summary" og forbyr å gjenta grunner kapteinen allerede kjenner (bin/fm-branch-prompt.sh:95-97), men away-posture-regelen på bin/fm-branch-prompt.sh:128 krever at hvert utført tiltak logges i event-summaryen "opening with 'per your away instructions:' and naming the sentence you acted on" - altså nettopp å gjenta kapteinens egne ord. Ingen av de to stedene markerer presedens, så modellen får to motstridende krav for samme felt i away-posture, og valget avgjør om return-brief faktisk kan gjøre rede for hvert tiltak. Forfatteren må bestemme presedensen (f.eks. eksplisitt unnta away-loggingen fra "no restated reasons"); dette er en intensjonsavgjørelse, ikke en mekanisk retting.
  • ℹ️ bin/fm-branch-prompt.sh:54 - Steg 4 sier nå "a summary written to the &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;Note style&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; section below" (bin/fm-branch-prompt.sh:54). "written to" leser som å skrive summaryen inn i seksjonen; meningen er "written per/according to the Note style section". Instruksjonssemantikk i en generert prompt, så ordlyden er produktatferd og bør rettes av forfatteren.
  • ⚠️ bin/fm-branch-prompt.sh:99 - Den nye Note style-regelen på bin/fm-branch-prompt.sh:99 krever at en captain-verdict-summary "leads with the question, then lettered options", mens away-posture-regelen på bin/fm-branch-prompt.sh:129 krever at samme felt åpner med "per your away instructions:" og navngir setningen. bin/fm-branch-prompt.sh:54 tillater eksakt én rapport per håndtert hendelse, så de to kan ikke splittes i to summaries. Konkret sekvens: away-record med to setninger ("merge the auth PR when green, and spin up the docs work if you can figure out the scope"); grenen merger den grønne PR-en (krever away-loggen fra :129) og holder på den tvetydige andre setningen, som bin/fm-branch-prompt.sh:127 sender som verdict captain "naming the sentence" - dermed en summary som både må åpne med away-loggen og med spørsmålet. Ingen av stedene markerer presedens. Søsken-steder for samme invariant: bin/fm-branch-prompt.sh:129 (away action log åpner summaryen) og bin/fm-branch-prompt.sh:127 (hold-on-doubt navngir setningen og går som captain-verdict). Dette er samme klasse som runde 1s funn note-style-vs-away-logging: fix-runden f6414fc løste brevity-aksen via den nye setningen på linje 98, men lot rekkefølge-aksen stå igjen. Remedien er en presedenssetning (f.eks. at away-loggen åpner og spørsmålet med bokstavalternativer følger på neste linje), og det er en intensjonsavgjørelse om captain-vendt format, ikke en mekanisk retting.
  • ⚠️ bin/fm-branch-prompt.sh:98 - Fix-runden e605fbe innførte presedenssetningen på bin/fm-branch-prompt.sh:98 med antecedenten "An outcome summary the away-posture rules require to name a captain sentence". Den er bredere enn både runde 1s og runde 2s brukerinstruks, som begge scopet unntaket til en summary som logger en handling utført under away-instruksene. To away-regler krever at en captain-setning navngis: bin/fm-branch-prompt.sh:129 (action log, handling utført) og bin/fm-branch-prompt.sh:127 (hold on doubt, ingen handling utført). Konkret sekvens innenfor tilsiktet bruk: away-record sier "spin up the docs work if you can figure out the scope"; grenen kan ikke handle med trygghet, gjør ingenting, og rapporterer verdict captain og navngir setningen per :127. Da treffer :98 antecedenten, så (a) konsekventen "that log line opens the summary" er uoppfyllelig fordi det ikke finnes noen "per your away instructions:"-linje, og (b) siste setning på :98 fritar denne summaryen fra one-line- og no-restated-reasons-reglene, samtidig som "Otherwise" som åpner bin/fm-branch-prompt.sh:99 slår av lead-with-the-question-regelen for nettopp denne saken. Resultatet er en captain-vendt note som verken er kort eller åpner med spørsmålet, i direkte strid med intent-kriteriet "anything that needs him leads with the question and lettered options". Forfatterens egen smalere formulering står allerede i docs/pi-supervision-branch.md:443 ("when the away-posture rules require the &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;per your away instructions:&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; log line"), så prompten har overskredet dokumentasjonen. Dette er ikke runde 1s note-style-vs-away-logging (brevity-aksen, som brukeren valgte å ignorere): dette er antecedentens scope pluss "Otherwise"-porten på :99. Remedien er å snevre e605fbes setning tilbake til den minimale, autoriserte formen, altså knytte den til en handling utført under away-instruksene i stedet for til enhver away-regel som navngir en setning, ikke å legge til mer maskineri. Søsken-steder for samme invariant: bin/fm-branch-prompt.sh:99 ("Otherwise" porter lead-with-question), bin/fm-branch-prompt.sh:127 (hold-on-doubt, saken som feilaktig sveipes inn), docs/pi-supervision-branch.md:443 (har den smalere formen og må holdes i synk), tests/fm-branch-supervision.test.sh:68 (runde 2s assertion pinner konsekventen men aldri antecedenten, så testen passerer med scopet feil).
  • ⚠️ bin/fm-branch-prompt.sh:99 - bin/fm-branch-prompt.sh:99 sier "lettered options the captain can answer with shorthand like &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;1a&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;", men eksempelet den gir emitterer kun bokstaver uten nummer: "Merge the PR now? a) yes b) wait for review." Regelen forteller aldri at spørsmålene skal nummereres, så shorthanden regelen selv krever har ingen antecedent. Intent-kriteriet er kapteinens egne ord: "should be presented as questions with options on how to solve them so i can do 1a 2b etc." Konkret sekvens: away-record med to setninger der begge holdes på tvil (:127) rapporteres i én summary, siden bin/fm-branch-prompt.sh:54 tillater eksakt én rapport per håndtert hendelse. Summaryen får da to unummererte bokstavlister, og "2b" er ikke besvarbart. Remedien er å la regelen kreve nummererte spørsmål med bokstavalternativer ("1. Merge the PR now? a) yes b) wait"), men det endrer det captain-vendte formatet og er forfatterens valg. Søsken-sted for samme invariant: docs/pi-supervision-branch.md:443 ("leads with the question and its lettered options" nevner heller ikke nummerering).
  • ⚠️ bin/fm-branch-prompt.sh:100 - Nummereringen som cebe46c innførte er scopet til én summary, ikke til det kapteinen faktisk leser. Hunk: "Number each question and letter its options, so the captain answers with shorthand like &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;1a&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;, for example &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;1. Merge the PR now? a) yes b) wait for review.&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;; a second question in the same summary is numbered &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;2.&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; so &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;2b&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; answers it." Intent-kriteriet er kapteinens egne ord: "should be presented as questions with options on how to solve them so i can do 1a 2b etc." Konkret sekvens innenfor tilsiktet bruk: away-posture, to wakes etter hverandre eskalerer hver sin sak (f.eks. en rød PR holdt per bin/fm-branch-prompt.sh:83 og en tvilsom setning holdt per bin/fm-branch-prompt.sh:128). bin/fm-branch-prompt.sh:54 tillater eksakt én rapport per håndtert hendelse, så dette blir to separate summaries, og hver av dem starter på "1." per :100. Kapteinen ser da to notater som begge stiller spørsmål "1." med alternativer a)/b), og den bare shorthanden "1a 2b" treffer ikke: det finnes ingen "2." på tvers av notatene. Hver visible outcome rendres verbatim med sin egen summary (.pi/extensions/fm-branch-supervision.ts:2300 og :990), så prompten er den eneste stedet formatet bestemmes. Merk: notatene bærer allerede et per-notat [seq N] i renderen på :2300, så adressering finnes; det som mangler er at nummereringsregelen knyttes til den, eller at MAIN renummererer. Remedien er en avgjørelse om kaptein-vendt format (per-notat-nummer, seq-relativ adressering, eller MAIN-side renummerering), ikke en mekanisk retting, derfor ask-user. Søsken-steder for samme invariant, som én fix-runde bør lukke samtidig: tests/fm-branch-supervision.test.sh:69 (mønsteret stopper rett før "; a second question in the same summary is numbered &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;2.&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;", så assertionen passerer selv om den klausulen slettes, altså pinner runden aldri sin egen nye regel) og docs/pi-supervision-branch.md:443 (sier "numbered, with its options lettered so &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;1a&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; answers it" og utelater også flerspørsmåls-tilfellet, så dokumentasjonen bestemmer ikke scopet).
  • ℹ️ bin/fm-branch-prompt.sh:99 - AGENTS.md:527 eier kaptein-vendt eskaleringsform for hele huset: "Lead directly with concrete evidence, then the consequence, options when applicable, and a recommendation." Den nye regelen på bin/fm-branch-prompt.sh:99 krever motsatt rekkefølge for branchens captain-verdict-notater: "Otherwise a captain-verdict summary that needs the captain's word opens with the question itself." User intent autoriserer eksplisitt question-first ("anything that needs him leads with the question and lettered options"), så prompten er riktig og AGENTS.md er det som nå henger etter. Branch-notatene er kaptein-synlige entries (.pi/extensions/fm-branch-supervision.ts:2300), så begge dokumentene beskriver samme flate. Ingen defekt i koden; spørsmålet er om AGENTS.md seksjon 9 skal peke til branchens "Note style" som unntak, og det er forfatterens valg. Dette er samme konsistensklasse som runde 2s docs-section-ownership-missing-note-style, som brukeren valgte å fikse; her er det AGENTS.md, ikke docs/pi-supervision-branch.md.
  • ℹ️ bin/fm-branch-prompt.sh:98 - Intent sier "anything that needs him leads with the question and lettered options", mens bin/fm-branch-prompt.sh:98 lar "per your away instructions:"-loggen åpne og spørsmålet følge etter for away-action-log-summaries. Det er et bevisst avvik brukeren selv dirigerte gjennom fix-rundene i runde 2 og runde 3 (away-exemption-antecedent-too-broad ble valgt til fiks nettopp for å beholde unntaket i smalere form), og cebe46c har nå snevret antecedenten til faktisk utført handling. Flagges kun for sporbarhet; ingen handling.
  • ℹ️ AGENTS.md:529 - Den nye kryssreferansen sier at branchens kaptein-vendte notater følger sin egen "Note style"-seksjon, "which opens with the question and its lettered options". Glossen er ubetinget, men bin/fm-branch-prompt.sh:98 gjør nettopp ett unntak: en summary som logger en handling utført under away-instruksene åpner med "per your away instructions:"-loggen, og spørsmålet følger etter. Det unntaket er ikke valgfritt kosmetikk: bin/fm-afk-return.sh:378 (AWAY_ACTION_MARKER) plukker return-brief-kontoen ut av rader som åpner med markøren, og tests/fm-afk-return.test.sh:438 asserter at en rad uten markøren i åpningen ikke telles som handling utført under ordene. En leser som bare har AGENTS.md:529 ville derfor produsere åpningen som utelater away-handlingen fra return-briefen. Konkret sekvens: away-record sier "merge the auth PR when green"; grenen merger og rapporterer verdict captain; med AGENTS.md-formen åpner noten "1. ...? a) ... b) ..." i stedet for markøren, og fm-afk-return.sh finner ingen away-handling. Impact er begrenset fordi hovedsetningen delegerer til den eiende seksjonen, og selve branchen kjører på den genererte prompten (linje 93-100), som er komplett. docs/pi-supervision-branch.md:443 har den fullstendige formen (routine = én linje, spørsmål nummerert fra "1." per summary, og away-loggen åpner når den finnes), så AGENTS.md er det ene stedet som nå er upresist. Dette er linjen runde 4s funn agents-md-evidence-first-vs-question-first ba om og som 04c063f la inn; fiksen introduserte upresisheten, den flyttet den ikke. Søsken-sted for samme invariant: .agents/skills/afk/SKILL.md:59 (sier at away-handlings-summaries åpner med markøren, og er fortsatt korrekt, men nevner ikke den nye question-first-formen for øvrige kaptein-notater). Remedien er ordlyd i kaptein-vendt husdokumentasjon, altså forfatterens valg.
  • ℹ️ bin/fm-branch-prompt.sh:100 - 04c063f svarte på runde 4s funn question-numbering-restarts-per-summary ved å velge ett av alternativene funnet selv listet: nummereringen er nå eksplisitt "local to one summary and start at &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;1.&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; in each". Det betyr at to påfølgende kaptein-notater begge viser "1." med a)/b), så en samlet shorthand "1a 2b" på tvers av notater ikke er adresserbar; per-notat-adressering finnes i stedet via [seq N] i renderen (.pi/extensions/fm-branch-supervision.ts:2300) og i MAIN-listingen (:1025, :1058). Det er riktig arbeidsdeling for denne endringen: bin/fm-branch-prompt.sh:34 sier at MAIN eier hvert ord kapteinen ser, så renummerering på tvers av notater hører til MAIN-flaten og ligger utenfor intent, som scoper arbeidet til branchens ⛵-notater. Assertionen på tests/fm-branch-supervision.test.sh:69 pinner nå hele setningen inkludert den nye klausulen, så runde 4s observasjon om at testen stoppet for tidlig er lukket. Speilet på docs/pi-supervision-branch.md:443 sier det samme ("numbered from &fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34;1.&fix(watcher): make check wakes lossless via watcher-side suppression kunchenguid/firstmate#34; within that one summary"). Flagges kun for sporbarhet; ingen handling, og ikke en blocker.
⏭️ **Test** - skipped

Step was skipped.

⚠️ **Document** - 1 info
  • ℹ️ docs/documentation-audiences.md:23 - bin/fm-doc-audience-check.sh kunne ikke kjøres i dette miljøet: skriptet exec-er python3, og verken python3 eller python finnes på PATH (kun node). Dermed er den maskinelle valideringen av inventardekning, README-ruting, påkrevde eier-pekere og lokale lenkemål ikke utført for denne endringen. Manuelt verifisert i stedet: begge endrede prosaflater står allerede i docs/documentation-audiences.json (AGENTS.md på linje 268, docs/pi-supervision-branch.md på linje 392), ingen ny dokumentflate ble opprettet, og den nye referansen i AGENTS.md:529 bruker samme bare (docs/...)-form som resten av filen, inkludert linje 129 for samme dokument. Ingen handling kreves i denne fasen; flagges for sporbarhet slik at sjekken kjøres på en vert med python3.
✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

Routine outcome notes now must be one line: the task in plain words,
then the outcome, with no restated reasons, no repeated questions, and
no self-commentary. A captain-verdict outcome now leads with the
question and lettered options.

Pin the new section in the byte-stability test.
@netbrain
netbrain merged commit ca00858 into main Sep 30, 2026
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