AGENTS.md@3-RECERCA/tools/v31/docs_before · git:20260930.d0c423d · 2026-09-30 · sha256 01c4254da4e65c29

AGENTS.md@3-RECERCA/tools/v31/docs_before git:20260930.d0c423dA

Immutable. This exact content never changes and is served at /api/v1/blob/01c4254da4e65c29.

# Instruccions per a agents

⛔ **02-09-2026: el projecte ja NO té git.** Per decisió de Pere, `.git` s'ha retirat (història congelada a `.coordination/git_historic_20260902/`, còpies al 4TB). Les instruccions d'aquest fitxer i de CLAUDE.md que parlen de `git status`, `reset`, `checkout`, `stash`, `commit` o «worktree» són inaplicables; tota la resta (SERIAL_WRITES amb `claim.lock`, un sol escriptor, fitxers d'estat, cap acció física sense autorització) continua vigent. La còpia de seguretat és `/Volumes/4TB` (rebut: `output/cleanup/20260902_neteja/REBUT.md`).

Abans de qualsevol mutació, llegeix `CLAUDE.md` sencer. El seu bloc inicial
és el context canònic actual; les seccions datades que segueixen conserven el
disseny i la història de captura i no poden sobreescriure l'estat post-eclipsi.
Si has d’alta una càmera nova, llegeix també `PROTOCOL_ALTA_CAMERA.md` i
`PROTOCOL_UNIVERSAL_ALTA_CAMERA_LLM.md` sencers abans de connectar-la.

## Arrencada obligatòria

1. Treballa des de `/Users/USUARI/Downloads/Eclipse 2026`; és l’única
   arrel canònica de codi.
2. Llegeix `.coordination/CLAUDE_STATUS.md` i
   `.coordination/CODEX_STATUS.md`.
3. No executis Git: el projecte no en té des del02-09-2026. Preserva tots
   els fitxers preexistents i evita sobreescriptures globals.
4. Actualitza només el teu fitxer d’estat. Claude no edita
   `CODEX_STATUS.md`; Codex no edita `CLAUDE_STATUS.md`.
5. Adquireix `SERIAL_WRITES` abans d’editar, construir, registrar l’app o
   tocar PTP. Allibera’l amb un handoff explícit i zero processos propis.

Per a qualsevol tasca post-eclipsi sobre imatges, Photoshop o actius del
Desktop, llegeix també, en aquest ordre:

1. `/Users/USUARI/Desktop/Eclipse 2026/IA/README.md`;
2. `/Users/USUARI/Desktop/Eclipse 2026/IA/ESTAT_ACTUAL.md`;
3. `/Users/USUARI/Desktop/Eclipse 2026/IA/MAPA_RUTES_I_OUTPUTS.md`.

Des del 22 d'agost hi ha dues arrels deliberades: aquest directori de Downloads
continua sent l'única arrel canònica de codi (sense Git); `/Users/USUARI/Desktop/Eclipse
2026` és l'arbre canònic d'actius fotogràfics, Photoshop i memòria d'IA. Les
rutes de Desktop conservades en rebuts anteriors poden ser històriques i no
s'han de reescriure. El mapa viu és a
`/Users/USUARI/Desktop/Eclipse 2026/IA/MAPA_RUTES_I_OUTPUTS.md`.

## Autoritat viva i escriptura única

El projecte és en fase **post-eclipsi**. Des del 22 d'agost Pere alterna Codex
i Claude per incorporar mirades independents amb handoffs auditables; cap IA
és propietària permanent. **El traspàs vigent és
`.coordination/HANDOFF_2026-09-05_V30.md`** (V30: minicercles suavitzats,
filtres originals preservats, alternatives i portes declarades). V28 i el
seu handoff són antecedents històrics. El del22-08 descriu l'alternança
Codex/Claude i continua vigent en això. Punt de represa: bloc inicial de
`CLAUDE.md`, `research/137` i `research/138`.

En cas de contradicció, mana aquest ordre:

1. `AGENTS.md` per a normes i seguretat;
2. `.coordination/claim.lock/owner.json` per a l'únic escriptor viu;
3. el bloc inicial de `CLAUDE.md`, l'`ACTIVE.json` d'IA i el traspàs vigent
   per a l'estat del projecte;
4. `CODEX_STATUS.md` i `CLAUDE_STATUS.md` com a diaris append-only de cada agent;
5. `README.md`, `research/README.md` i documents datats com a índex i evidència.

`SERIAL_WRITES` és un directori adquirit amb `mkdir
.coordination/claim.lock` —operació atòmica— i conté un únic `owner.json`
amb `claim_id`, propietari, tasca, hora i abast. Si el directori ja existeix,
no escriguis: comprova el propietari i espera o rep un traspàs explícit. En
alliberar, registra primer `RELEASED` al teu fitxer d'estat i després elimina
només el teu `owner.json` i el directori buit. Un fitxer solt anomenat
`claim.lock` no és un lock vàlid.

`.claude/worktrees/gallant-hamilton-e9c6bd` és un worktree històric i no és
font d’autoritat. No hi continuïs feina ni el suprimeixis mentre una sessió
de Claude el pugui estar usant. La font viva és sempre l’arrel.

## Autoritat i maquinari

- Cap agent toca càmeres, PTP, `gphoto2`, captures, LaunchServices o la GUI
  física sense autorització concreta de Pere.
- Una campanya desatesa explícitament autoritzada cobreix els gates del seu
  pla viu, però no amplia l’abast, no autoritza accions manuals o destructives
  i no permet repetir un trigger ambigu.
- Resol sempre el port per identitat USB i confirma model + sèrie per PTP.
  L’ordre dels cables no és identitat.
- En una missió operativa materialitzada, un Busy, `-110`, timeout o resultat
  de trigger ambigu consumeix només aquella acció: registra-la en quarantena,
  no la repeteixis i conserva les accions futures del mateix cos mentre la
  identitat, la propietat i l'estat operatiu continuïn sent segurs.
- Identitat/propietat divergent, una mutació de configuració amb estat físic
  desconegut o la impossibilitat de mantenir el ledger aturen aquell canal.
  Els perfils de qualificació que declaren fail-fast també s'aturen al primer
  error. Cap d'aquests casos atura els altres canals.

## Prioritats invariants

1. **Mission first:** una càmera degradada no atura les altres, UNA CAMERA
   DEGRADADA s'ha d'intentar seguir utilitzant per la missió, costi el que
   costi. Aquest literal ordena esgotar les continuacions segures del canal;
   no autoritza repetir un trigger ambigu ni continuar amb identitat o
   propietat divergent, estat físic desconegut després d’un write o un ledger
   que no es pugui garantir. Aquests límits aturen només el canal afectat.
   Cap control auxiliar nou —ISO, Camera Settings, checklist, Sync UTC o
   equivalent— pot convertir-se directament o indirectament en prerequisit
   de `Start mission`. Només la identitat/propietat física necessària per
   dirigir amb seguretat aquell cos pot retenir el seu canal.
   El checklist és exclusivament un recordatori visual: desmarcat no genera
   `WARNING`, no degrada cap operació i continua editable durant Sync UTC.
   Deute de qualificació, H90, òptica o ciència ha de continuar visible com a
   informació de programa, però no és un `WARNING` operatiu de l'app.
2. **Simplicitat:** l’operador només ha de decidir allò que no pot decidir el
   programa.
3. **Agentic AI abans de la missió:** la captura és local, offline,
   determinista i independent de qualsevol LLM.

Les Sony recomanen ISO 100. La Canon 6D declara ISO 1600 per desplaçar la seva
finestra AEB nativa de 6 EV cap a la corona feble, ja que no pot fer un canvi
ràpid de 9 EV només amb bràqueting. Cap valor ISO —Auto, 0, desconegut o
absent— pot produir `FAILED`, bloquejar un stage o donar sortida no-zero en
una missió operativa. L’ISO és telemetria advisory propietat de l’operador.
El candidat privat local exposa botons ISO 100/200/400 només com a accions
preflight explícites. Un clic autoritza un sol intent per cos PTP suportat,
amb model i sèrie exactes, una mutació, readback i resultat literal `SET` o
`NOT SET`; cada fallada queda aïllada al seu canal. Només un Busy que declara
literalment `was not set` admet reintents acotats. Els controls queden
deshabilitats durant missió, scan, Sync UTC o una altra operació i mai són un
gate de `Start mission`. La release pública 0.8.0 continua immutable i sense
botons ISO.

## Baseline de captura congelat — 10 d’agost de 2026

- App local: `gui/dist/Eclipse Command.app`, candidat privat **V1.02**
  (`1.0.2`). La release pública 0.8.0 continua immutable.
- Executable SHA-256:
  `61227d418ec7a74a6fa11c934970d85218466ffd067754ec68efbc3334ba9f4f`.
- Manifest de 51 fonts SHA-256:
  `d06de97146e521afeb1871c3cfd06c5944faf3c40dbd96898f53c30d734a2f6a`;
  51/51 inputs coincideixen amb la font viva.
- QA font: GUI 513/513, controlador 1.107/1.107, fuzz, perfils, porta de
  totalitats 60–110 s i `git diff --check` verds. QA portable: 11/11 PASS,
  arm64, signatura ad-hoc vàlida i 114 Mach-O autocontinguts.
- La V1.02 mostra noms curts amb obertura de disseny, limita el hover a una
  descripció útil i identitat exacta, i afegeix veu a C2−5 min, −2 min,
  −1 min i C4−1 min. Els cues són one-shot i no es reprodueixen tard.
- Els Sony vius usen base de contacte 1/800, tres àncores d’earthshine i la
  muntanya de corona 1/4 → 1 s → 1/4; cap timing no s’hereta entre cossos.
- La R6 usa una foto per exposició, AEB off, contactes a 1/3200 i bloc fosc
  2 s ×3 + 10,3 s ×3. A la V1.02 el setter pre-C2 comença a C2−15,00 i la
  primera foto a −14,75. S’eliminen només vuit fotos de l’antic prefix;
  des de C2−5,65 fins a C4 el programa és idèntic a la V1.01. A 91 s són
  109 captures de nucli + cinc documentals = 114; totalitat 55, parcial
  posterior 34 i setters 29 no canvien.
- La simulació exhaustiva de la R6 cobreix 1.503 geometries entre 60 i 110 s:
  delta −8 exacte, sufix invariant i cronologies GUI/worker idèntiques.
- El bundle V1.02 s’ha obert físicament: capçalera V1.0.2, R6 III i A7RIIIA
  detectades READY amb els noms nous. No s’ha iniciat cap missió ni captura;
  la prova va acabar amb zero processos propis.
- L’evidència física d’exposicions continua sent la dels runs V1.01/V1.00;
  la V1.02 encara no té un run de dispars propi. Òptica, RAW, H90, HDR i
  tracking continuen com a deute advisory, no com a `WARNING` operatiu.
- Informe d’autoritat local: `gui/QA_REPORT_1.0.2_2026-08-10.md`.

## Regressió mínima

```bash
PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=gui QT_QPA_PLATFORM=offscreen \
  gui/.venv312/bin/python -u -m unittest discover -s gui/tests

PYTHONDONTWRITEBYTECODE=1 \
  gui/.venv312/bin/python -m unittest discover -s controller/tests

PYTHONDONTWRITEBYTECODE=1 gui/.venv312/bin/python \
  gui/tools/qa_adaptive_timeline_fuzz.py .
```

No canalitzis les suites per `tail`: amaga una possible penjada. Per construir
i validar el bundle, segueix literalment la secció “Build macOS” de
`CLAUDE.md`.