Part of the AI back-office PRD — T17 + knowledge layer. The vault side is LIVE (SecondBrain repo: PARA vault, sb.py digest/inbox/gitea-ingest on the hermes cron ticker, mcp-obsidian); this issue builds the FLEET side.
Deliverables
Capture hook: after significant runs (audit pack, fiscal sheet, incident, decision), deposit a distilled note into 00-Inbox/ (or 02-Areas/Admin/Arcodange-Ops, 01-Projects/Clients/KissMetrics/) with idempotent frontmatter — the pattern SecondBrain's Gitea ingest already proves (re-runs never duplicate; human notes never edited in place).
Retrieval helper: query the vault (dataview / mcp-obsidian) before context-hungry tasks (T05 contract terms, T06 dunning tone/history, T12 baseline); retrieved facts carry their note dates (trusted-but-stale: ERP is the book of record).
Close decision D7 (cluster↔vault access): spike git clone/pull of arcodange/SecondBrain (leaning) vs tunneled REST — short ADR or PRD note.
Respect the vault's own routing doctrine (Claude default · Mistral well-defined · Ornith/hermes for confidential).
(Parked, nice-to-have — operator 2026-07-12: the meeting-capture lane (D9/Hyprnote, comment below) is NOT part of this issue's acceptance; first client calls happen on the iPhone, which desktop capture doesn't cover anyway. Revisit when desktop meetings become routine.)
Acceptance: one real audit-pack summary deposited + re-run = no duplicate; one retrieval bundle consumed by a pipeline stage; D7 recorded.
Execution — Blocked by: #38 (capture-atom home; the D7 spike itself is unblocked) · Blocks: T05/T06 context quality (#53, dunning later) · Human gates: none. Start:claude --worktree t17-hooks from the erp repo root; read the SecondBrain repo's sb.py + vault conventions first (memory: second-brain-vault). Done means: evidence comment here (deposit + idempotent re-run log, retrieval bundle sample) → D7 ADR-line via factory#22 → PR merged with Closes #49.
Part of the **AI back-office PRD** — [T17](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/vibe/PRD/ai-back-office/task-inventory.md) + [knowledge layer](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/vibe/PRD/ai-back-office/agent-architecture.md). The vault side is LIVE (SecondBrain repo: PARA vault, `sb.py` digest/inbox/gitea-ingest on the hermes cron ticker, `mcp-obsidian`); this issue builds the FLEET side.
**Deliverables**
- **Capture hook**: after significant runs (audit pack, fiscal sheet, incident, decision), deposit a distilled note into `00-Inbox/` (or `02-Areas/Admin`/`Arcodange-Ops`, `01-Projects/Clients/KissMetrics/`) with **idempotent frontmatter** — the pattern SecondBrain's Gitea ingest already proves (re-runs never duplicate; human notes never edited in place).
- **Retrieval helper**: query the vault (dataview / mcp-obsidian) before context-hungry tasks (T05 contract terms, T06 dunning tone/history, T12 baseline); retrieved facts carry their **note dates** (trusted-but-stale: ERP is the book of record).
- Close decision **D7** (cluster↔vault access): spike git clone/pull of `arcodange/SecondBrain` (leaning) vs tunneled REST — short ADR or PRD note.
- Respect the vault's own routing doctrine (Claude default · Mistral well-defined · Ornith/hermes for confidential).
- *(Parked, nice-to-have — operator 2026-07-12: the meeting-capture lane (D9/Hyprnote, comment below) is NOT part of this issue's acceptance; first client calls happen on the iPhone, which desktop capture doesn't cover anyway. Revisit when desktop meetings become routine.)*
**Acceptance:** one real audit-pack summary deposited + re-run = no duplicate; one retrieval bundle consumed by a pipeline stage; D7 recorded.
---
**Execution** — Blocked by: #38 (capture-atom home; the D7 spike itself is unblocked) · Blocks: T05/T06 context quality (#53, dunning later) · Human gates: none.
**Start:** `claude --worktree t17-hooks` from the erp repo root; read the SecondBrain repo's `sb.py` + vault conventions first (memory: `second-brain-vault`).
**Done means:** evidence comment here (deposit + idempotent re-run log, retrieval bundle sample) → D7 ADR-line via factory#22 → PR merged with `Closes #49`.
arcodange
added this to the P3 — Standing fleet milestone 2026-07-11 18:18:27 +02:00
Scope note (operator direction 2026-07-11, anchored in the PRD knowledge layer): the T17 capture/retrieval rails should treat 01-Projects/Clients/<client>/ as the junction of the three agent families (back-office, sales chain, future delivery agents). Concretely for this issue: (a) deposits into client dossiers are agent-owned files (e.g. a regenerated <client> — billing snapshot.md with ai_generated: true frontmatter, idempotent), never edits of human notes; (b) the KM dossier is the pilot — billing snapshot should include the deferred schedule (contract: $3,000 deferred +3 months → May's deferred due ~2026-08-23, June's ~2026-09-23); (c) meeting notes flow in via a local transcription lane (Whisper-class model on the M4 + Ornith summary — operator has NO proprietary notetaker account and prefers local-first per the vault doctrine) as a natural sibling sb.py job (SecondBrain repo) if cheap. Retrieval consumers unchanged (T05/T06/T12).
Scope note (operator direction 2026-07-11, anchored in the PRD knowledge layer): the T17 capture/retrieval rails should treat `01-Projects/Clients/<client>/` as the **junction of the three agent families** (back-office, sales chain, future delivery agents). Concretely for this issue: (a) deposits into client dossiers are **agent-owned files** (e.g. a regenerated `<client> — billing snapshot.md` with `ai_generated: true` frontmatter, idempotent), never edits of human notes; (b) the KM dossier is the pilot — billing snapshot should include the deferred schedule (contract: $3,000 deferred +3 months → May's deferred due ~2026-08-23, June's ~2026-09-23); (c) meeting notes flow in via a **local transcription lane** (Whisper-class model on the M4 + Ornith summary — operator has NO proprietary notetaker account and prefers local-first per the vault doctrine) as a natural sibling `sb.py` job (SecondBrain repo) if cheap. Retrieval consumers unchanged (T05/T06/T12).
Meeting-capture lane — tool decided (PRD D9, factory#23 merged 2026-07-12).
Hyprnote free tier (recently rebranded "Char") is the leaning: speaker diarization and Google Calendar sync ([email protected]) are both on the free plan — the two operator criteria at once. Manual trigger only: auto-record is a Pro feature and stays off by consent stance. Meetily (MIT, diarization in the community core, no calendar sync) is the OSS fallback; if used, sb.py compensates by matching recording timestamps against the calendar ICS.
Steps this issue inherits:
[HUMAN] install Hyprnote free on the M4, connect the [email protected] calendar, record one real bilingual call (EN client / FR partner) with participant consent.
QA gate (closes D9): diarization quality reviewed on that call — speaker attribution must be usable in both languages. If it fails → switch to Meetily and re-gate.
[AGENT] build the sb.py meeting-ingest job: watch the local export dir → deposit an ai_generated note under 01-Projects/Clients/<client>/ matched to the calendar event → Ornith summary pass (vault doctrine: local-first, append-only, never edit human notes).
Record the D9 outcome as an ADR line via factory#22.
Acceptance addition: one real meeting lands in the right client dossier with speakers attributed and calendar linkage intact — zero audio or transcript bytes leaving the M4.
**Meeting-capture lane — tool decided (PRD D9, factory#23 merged 2026-07-12).**
**Hyprnote free tier** (recently rebranded "Char") is the leaning: speaker **diarization** and **Google Calendar sync** ([email protected]) are both on the free plan — the two operator criteria at once. Manual trigger only: auto-record is a Pro feature and stays off by consent stance. **Meetily** (MIT, diarization in the community core, no calendar sync) is the OSS fallback; if used, `sb.py` compensates by matching recording timestamps against the calendar ICS.
Steps this issue inherits:
1. **[HUMAN]** install Hyprnote free on the M4, connect the [email protected] calendar, record one **real bilingual call** (EN client / FR partner) with participant consent.
2. **QA gate (closes D9):** diarization quality reviewed on that call — speaker attribution must be usable in both languages. If it fails → switch to Meetily and re-gate.
3. **[AGENT]** build the `sb.py` meeting-ingest job: watch the local export dir → deposit an `ai_generated` note under `01-Projects/Clients/<client>/` matched to the calendar event → Ornith summary pass (vault doctrine: local-first, append-only, never edit human notes).
4. Record the D9 outcome as an ADR line via factory#22.
Acceptance addition: one real meeting lands in the right client dossier with speakers attributed and calendar linkage intact — zero audio or transcript bytes leaving the M4.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of the AI back-office PRD — T17 + knowledge layer. The vault side is LIVE (SecondBrain repo: PARA vault,
sb.pydigest/inbox/gitea-ingest on the hermes cron ticker,mcp-obsidian); this issue builds the FLEET side.Deliverables
00-Inbox/(or02-Areas/Admin/Arcodange-Ops,01-Projects/Clients/KissMetrics/) with idempotent frontmatter — the pattern SecondBrain's Gitea ingest already proves (re-runs never duplicate; human notes never edited in place).arcodange/SecondBrain(leaning) vs tunneled REST — short ADR or PRD note.Acceptance: one real audit-pack summary deposited + re-run = no duplicate; one retrieval bundle consumed by a pipeline stage; D7 recorded.
Execution — Blocked by: #38 (capture-atom home; the D7 spike itself is unblocked) · Blocks: T05/T06 context quality (#53, dunning later) · Human gates: none.
Start:
claude --worktree t17-hooksfrom the erp repo root; read the SecondBrain repo'ssb.py+ vault conventions first (memory:second-brain-vault).Done means: evidence comment here (deposit + idempotent re-run log, retrieval bundle sample) → D7 ADR-line via factory#22 → PR merged with
Closes #49.Scope note (operator direction 2026-07-11, anchored in the PRD knowledge layer): the T17 capture/retrieval rails should treat
01-Projects/Clients/<client>/as the junction of the three agent families (back-office, sales chain, future delivery agents). Concretely for this issue: (a) deposits into client dossiers are agent-owned files (e.g. a regenerated<client> — billing snapshot.mdwithai_generated: truefrontmatter, idempotent), never edits of human notes; (b) the KM dossier is the pilot — billing snapshot should include the deferred schedule (contract: $3,000 deferred +3 months → May's deferred due ~2026-08-23, June's ~2026-09-23); (c) meeting notes flow in via a local transcription lane (Whisper-class model on the M4 + Ornith summary — operator has NO proprietary notetaker account and prefers local-first per the vault doctrine) as a natural siblingsb.pyjob (SecondBrain repo) if cheap. Retrieval consumers unchanged (T05/T06/T12).Meeting-capture lane — tool decided (PRD D9, factory#23 merged 2026-07-12).
Hyprnote free tier (recently rebranded "Char") is the leaning: speaker diarization and Google Calendar sync ([email protected]) are both on the free plan — the two operator criteria at once. Manual trigger only: auto-record is a Pro feature and stays off by consent stance. Meetily (MIT, diarization in the community core, no calendar sync) is the OSS fallback; if used,
sb.pycompensates by matching recording timestamps against the calendar ICS.Steps this issue inherits:
sb.pymeeting-ingest job: watch the local export dir → deposit anai_generatednote under01-Projects/Clients/<client>/matched to the calendar event → Ornith summary pass (vault doctrine: local-first, append-only, never edit human notes).Acceptance addition: one real meeting lands in the right client dossier with speakers attributed and calendar linkage intact — zero audio or transcript bytes leaving the M4.