Skip to content

Tasks

Generated by tasks-export from the assistant's task register — do not hand-edit; it is overwritten on every run. Add or close tasks from the admin Tasks card, or ask the assistant. See meetings-and-tasks for the design.

Generated: 2026-10-26 13:01 — 210 open, 181 overdue, 124 closed.

Open

  • #21 adiaz@embeddedera.com / Administration: Trademark: USPTO search on "EmbeddedEra", register if clear; buy embeddedera.net/.io/.co; pick one social handle spelling. (due 2026-10-14 OVERDUE) — Trademark: USPTO search on "EmbeddedEra", register if clear; buy embeddedera.net/.io/.co; pick one social handle spelling.

Deliverables: - USPTO trademark search report for "EmbeddedEra" - Trademark registration confirmation or decision record - Domain purchase receipt and ownership record - Social media handle selection and reservation documentation Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Search results document shows USPTO database query completed for "EmbeddedEra" with findings recorded - Notes or email record shows trademark registration status decision (approved, rejected, or deferred) with reasoning - Domain registrar account shows active ownership of at least one of embeddedera.net, embeddedera.io, or embeddedera.co - Record shows which social handle spelling was chosen and confirmation of reservation on at least one major platform [note:embeddedera-business] - [ ] #22 yrosado@embeddedera.com / Administration: NC resale certificate (E-595E) + supplier business accounts with it on file (Digi-Key, Mouser, LCSC, JLCPCB/PCBWay). (due 2026-10-06 OVERDUE) — NC resale certificate (E-595E) + supplier business accounts with it on file (Digi-Key, Mouser, LCSC, JLCPCB/PCBWay).

Deliverables: - NC resale certificate E-595E document - Digi-Key business account with resale certificate on file - Mouser business account with resale certificate on file - LCSC business account with resale certificate on file - JLCPCB/PCBWay business account with resale certificate on file Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - E-595E certificate is uploaded and accessible in task attachments or notes - Digi-Key account is active and resale certificate E-595E is confirmed on file in account settings - Mouser account is active and resale certificate E-595E is confirmed on file in account settings - LCSC account is active and resale certificate E-595E is confirmed on file in account settings - JLCPCB or PCBWay account is active and resale certificate E-595E is confirmed on file in account settings [note:embeddedera-business] - [ ] #23 adiaz@embeddedera.com / Administration: Payment rails: Stripe invoices (card + ACH) + wire details; deposit policy; net terms rule. Then wire remit-to into the invoice template. (due 2026-10-14 OVERDUE) — Payment rails: Stripe invoices (card + ACH) + wire details; deposit policy; net terms rule. Then wire remit-to into the invoice template.

Deliverables: - Stripe invoice configuration with card and ACH payment methods - Wire transfer remittance details document - Deposit policy written record - Net terms payment rule documented - Invoice template with wire remit-to information Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Stripe account settings show card and ACH payment rails enabled on invoices - Wire transfer remittance details (bank name, account number, routing information) are recorded and accessible - Deposit policy is written and filed in a retrievable location - Net terms payment rule is documented with clear payment window criteria - Invoice template file contains wire remit-to bank details in the payment section [note:embeddedera-business] - [ ] #24 adiaz@embeddedera.com / Administration: Internal rate card (never published) + time tracking (Kimai self-hosted or a daily vault log). (due 2026-10-14 OVERDUE) — Internal rate card (never published) + time tracking (Kimai self-hosted or a daily vault log).

Deliverables: - Internal rate card document - Time tracking system (Kimai instance or daily vault log) Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Internal rate card exists and contains hourly/project rates for internal reference only - Time tracking mechanism is operational and records daily work hours [note:embeddedera-business] - [ ] #25 yrosado@embeddedera.com / Administration: Shipping: business accounts (USPS Business / Pirate Ship, UPS), packaging spec (ESD/MSL bags), hazmat for batteries, HS codes + commercial invoice template for international. (due 2026-10-14 OVERDUE) — Deliverables: - USPS Business / Pirate Ship account setup documentation - UPS business account setup documentation - Packaging specification document (ESD/MSL bags) - Hazmat shipping procedure for batteries - HS codes reference and commercial invoice template for international shipments Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Documentation exists describing USPS Business and Pirate Ship account credentials, login procedures, and integration steps - Documentation exists describing UPS business account credentials, login procedures, and integration steps - Document specifies ESD and MSL bag types, sizes, labeling requirements, and when each packaging type must be used - Document outlines hazmat classification for batteries, required labels, handling procedures, and carrier-specific requirements - Reference document and template exist listing applicable HS codes and containing a completed or blank commercial invoice template ready for international orders [note:embeddedera-business] - [ ] #27 adiaz@embeddedera.com / Administration: Product docs: datasheet / quick-start / manual per product, firmware changelog, support page; warranty end = ship date + term from ERP. (due 2026-10-14 OVERDUE) — Product docs: datasheet / quick-start / manual per product, firmware changelog, support page; warranty end = ship date + term from ERP.

Deliverables: - Product datasheet, quick-start guide, and manual files - Firmware changelog document - Support page - Warranty end date calculated and recorded per product Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Datasheet, quick-start, and manual files exist and are accessible for each product - Firmware changelog document is complete and up-to-date - Support page is published and contains product support information - Warranty end dates are calculated from ship date plus warranty term from ERP and recorded in the system [note:embeddedera-business] - [ ] #28 adiaz@embeddedera.com / Administration: Firmware release process: semver tags, checksummed images, flasher pinned to a release, version per serial. (due 2026-10-14 OVERDUE) — Firmware release process: semver tags, checksummed images, flasher pinned to a release, version per serial.

Deliverables: - Git repository with semantic version tags for firmware releases - Checksummed firmware images (with hash files for verification) - Firmware flasher tool pinned to a specific release version - Firmware version tracking system per device serial number Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Semantic version tags (e.g., v1.0.0, v1.1.0) exist in git history and follow semver convention - Firmware image files have accompanying checksum files (SHA256 or similar) in the release artifacts - Flasher tool has a locked/pinned version constraint or tagged release it depends on, documented in its configuration or README - A record or system exists that stores and retrieves firmware version by device serial number (database, file, or API endpoint) [note:embeddedera-business] - [ ] #29 adiaz@embeddedera.com / Administration: Email/IT hardening: DMARC none→quarantine→reject, DNSSEC on, registrar lock, MFA audit (Google, Cloudflare, GitHub, Resend, Vaultwarden); helper offboarding checklist. (due 2026-10-14 OVERDUE) — Email/IT hardening: DMARC none→quarantine→reject, DNSSEC on, registrar lock, MFA audit (Google, Cloudflare, GitHub, Resend, Vaultwarden); helper offboarding checklist.

Deliverables: - DMARC policy progression record (none → quarantine → reject) - DNSSEC enablement confirmation - Registrar lock activation record - MFA audit report for Google, Cloudflare, GitHub, Resend, and Vaultwarden - Helper offboarding checklist Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A written record documenting the DMARC policy changes and dates transitioned from none to quarantine to reject - Evidence that DNSSEC is enabled on the domain (DNS records or registrar confirmation) - Confirmation that registrar lock is active on the domain account - A documented audit showing MFA status and compliance across Google, Cloudflare, GitHub, Resend, and Vaultwarden accounts - A completed checklist for helper offboarding with sign-off or completion marks [note:embeddedera-business] - [ ] #30 adiaz@embeddedera.com / Administration: Weekly numbers page (automated once the ERP has data): leads, quotes, win rate, revenue, inventory value, test yield, on-time ship, cash. (due 2026-10-14 OVERDUE) — Weekly numbers page (automated once the ERP has data): leads, quotes, win rate, revenue, inventory value, test yield, on-time ship, cash.

Deliverables: - Weekly numbers dashboard page - Automated data pipeline from ERP to dashboard - Dashboard metrics display (leads, quotes, win rate, revenue, inventory value, test yield, on-time ship, cash) Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A web page or report displaying weekly business metrics is accessible and updated - Data flows automatically from the ERP system to the dashboard without manual intervention - All eight metrics (leads, quotes, win rate, revenue, inventory value, test yield, on-time ship, cash) are displayed with current week's values [note:embeddedera-business] - [ ] #31 adiaz@embeddedera.com / Administration: Affiliate income — scout done 2026-09-11 (Haiku). Apply in this order, all free: (1) PCBWay affiliate — 10% on referred orders + a referral coupon program, direct sign-up, no audience minimum: https:/ (due 2026-10-14 OVERDUE) — Affiliate income — scout done 2026-09-11 (Haiku). Apply in this order, all free: (1) PCBWay affiliate — 10% on referred orders + a referral coupon program, direct sign-up, no audience minimum: https://www.pcbway.com/helpcenter/promotions/Do_you_have_an_Affiliate_Program_.html ; (2) JLCPCB affiliate for engineers — terms not public, apply and ask: https://jlcpcb.com/help/article/Affiliate-Program-for-Electronic-Engineers (their public referral program pays coupons only, new customers only); (3) Seeed Studio affiliate — 3% base up to 20% on campaigns, 45-day cookie, quarterly payout, $50 minimum: https://www.seeedstudio.com/blog/affiliate-program/ . Later, after the domain is live: Digi-Key via Impact/CJ (low single-digit %, needs an active site), Amazon Associates (3% industrial, W-9, $100 min). No program: OSH Park, Aisler (sponsorship only); Mouser/LCSC unclear. Site work once links exist: a "Where we get boards made / Resources" section, FTC disclosure line at the point of each link, UTM tags in site.ts.

Deliverables: - PCBWay affiliate account registration and approval confirmation - JLCPCB affiliate application submission with terms request - Seeed Studio affiliate account registration and approval confirmation - A record documenting which programs were skipped and why (OSH Park, Aisler, Mouser, LCSC) Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - PCBWay affiliate dashboard is accessible and shows an active account with 10% commission rate visible - JLCPCB affiliate application has been submitted and confirmation email or ticket reference is recorded - Seeed Studio affiliate dashboard is accessible and shows an active account with commission terms (3%–20%, 45-day cookie, quarterly payout, $50 minimum) visible - A note in the task Done comment or attached document lists programs rejected or deferred with reasoning (OSH Park sponsorship-only, Aisler sponsorship-only, Mouser/LCSC unclear, Digi-Key/Amazon deferred until domain live) [note:embeddedera-business] - [ ] #32 adiaz@embeddedera.com / Administration: Flyer / brochure: one two-sided sheet — services by family, capabilities specs strip, lead time, QR to the site; a PDF version for email. Same brand guide. (due 2026-10-14 OVERDUE) — Flyer / brochure: one two-sided sheet — services by family, capabilities specs strip, lead time, QR to the site; a PDF version for email. Same brand guide.

Deliverables: - Two-sided flyer/brochure design file (source format) - PDF version of flyer for email distribution - Printed flyer proof or final print-ready file - QR code linking to company website Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Design file exists and contains services organized by family, capabilities specs strip, lead time, and QR code, following brand guide - Check by hand: file: flyer-email.pdf exists and is ready for distribution - Print-ready file is approved and flyer has been produced or is ready for printing - QR code on flyer is functional and directs to company website [note:embeddedera-business] - [ ] #33 adiaz@embeddedera.com / Administration: Trade show: pick one regional show to test (scout: NC manufacturing / electronics / maker events in the Triangle, e.g. NC Manufacturing Conference, RTP tech meetups, Maker Faire NC); budget a 10×10 bo (due 2026-10-14 OVERDUE) — Trade show: pick one regional show to test (scout: NC manufacturing / electronics / maker events in the Triangle, e.g. NC Manufacturing Conference, RTP tech meetups, Maker Faire NC); budget a 10×10 booth kit (table cover, retractable banner, monitor loop of the shoot videos, sample boards under acrylic); swag (branded pens, stickers, PCB-coaster keychains made in house — cheap and on-brand); lead capture = the /quote form on a tablet.

Deliverables: - Selected regional trade show with event date and location - Booth kit budget breakdown and vendor quotes - Swag production plan with costs (pens, stickers, PCB-coaster keychains) - Lead capture setup document (tablet form configuration) Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A decision document or note naming the chosen event, its date, and venue in the NC Triangle area - A spreadsheet or quote collection showing 10×10 booth kit components (table cover, banner, monitor, acrylic display) with total cost - A production or procurement record for branded swag listing quantities, vendors, and per-unit costs - Documentation or configuration screenshot showing the /quote form deployed on a tablet for lead capture at the booth [note:embeddedera-business] - [ ] #51 adiaz@embeddedera.com / Administration: Walk each SOP on a real job and flip status: draft → active; add Spanish versions if Yrosado prefers. (due 2026-10-14 OVERDUE) — Walk each SOP on a real job and flip status: draft → active; add Spanish versions if Yrosado prefers.

Deliverables: - SOP status updated from draft to active in production system - Spanish version SOPs created (if approved by Yrosado) - Documentation of which SOPs were tested on real jobs Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Each SOP record shows status: active in the SOP registry - Spanish SOP documents exist and are linked to their English counterparts, if Yrosado approved translation - Log or record shows which SOPs were validated against actual job workflows [note:mrp] - [ ] #52 adiaz@embeddedera.com / Administration: LHG Contracting (InvenTree company 5) is billed with no sales tax. Get the NC resale/exemption certificate (Form E-595E) from Paul Hale and attach it to the company record; without it NC treats a B2B (due 2026-10-14 OVERDUE) — LHG Contracting (InvenTree company 5) is billed with no sales tax. Get the NC resale/exemption certificate (Form E-595E) from Paul Hale and attach it to the company record; without it NC treats a B2B sale as taxable unless it is for resale. Ask the CPA in the sales-tax hour (see embeddedera-business).

Deliverables: - NC resale/exemption certificate (Form E-595E) from Paul Hale - Certificate attachment in InvenTree company 5 (LHG Contracting) record Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Attachment file received and confirmed as Form E-595E from Paul Hale - attachments>=1 [note:mrp] - [ ] #53 adiaz@embeddedera.com / Administration: Finish provisioning DESKTOP-1LK2GJK (Windows) — sync itself works: bin/notes-sync.cmd verified on the laptop 2026-09-09 (this note was pushed with it), and bin/notes-sync also runs under Git Bas (due 2026-10-14 OVERDUE) — Finish provisioning DESKTOP-1LK2GJK (Windows) — sync itself works: bin/notes-sync.cmd verified on the laptop 2026-09-09 (this note was pushed with it), and bin/notes-sync also runs under Git Bash when called by full path. Still missing there: %USERPROFILE%\Notes\bin is not on PATH, so both are invoked by full path; rules/CLAUDE.md is not copied to %USERPROFILE%\.claude\CLAUDE.md and rules/agents is not linked, so the global rules and the worker/grader/scout agents apply only when a session reads them by hand; and part-lookup stays broken until ~/Documents/GitHub/KiCad is cloned. restore.sh is Mac/Linux-only — do not run it on Windows.

Deliverables: - %USERPROFILE%\Notes\bin added to Windows PATH environment variable - %USERPROFILE%.claude\CLAUDE.md file copied from rules/CLAUDE.md - rules/agents directory linked or copied to %USERPROFILE%.claude\agents - ~/Documents/GitHub/KiCad repository cloned on DESKTOP-1LK2GJK Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - PATH environment variable on DESKTOP-1LK2GJK contains %USERPROFILE%\Notes\bin and bin commands are callable without full path - Check by hand: file: %USERPROFILE%.claude\CLAUDE.md exists and contains the global rules - %USERPROFILE%.claude\agents directory exists with agent subdirectories (worker, grader, scout) accessible - ~/Documents/GitHub/KiCad directory exists on DESKTOP-1LK2GJK and part-lookup command functions without errors [note:plex-server] - [ ] #54 adiaz@embeddedera.com / Administration: 05 — off-box copy. Half done 2026-09-08: versioned history now lives in a restic repo on the pool, inside parity — survives any one disk (map/objects/storage/history-repo). Remaining: create a B2 (due 2026-10-14 OVERDUE) — 05 — off-box copy. Half done 2026-09-08: versioned history now lives in a restic repo on the pool, inside parity — survives any one disk (map/objects/storage/history-repo). Remaining: create a B2 bucket + app key, put B2_ACCOUNT_ID / B2_ACCOUNT_KEY / HISTORY_OFFBOX_REPO=b2:<bucket>:restic-history in ~/.config/restic/env, run history-backup copy, prove a restore from B2.

Deliverables: - B2 bucket for off-box history backup - B2 app key with appropriate permissions - restic environment configuration file - Successful off-box backup copy to B2 - Verified restore from B2 backup Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - B2 bucket exists and is accessible - B2 app key created and stored securely - Check by hand: file: ~/.config/restic/env contains B2_ACCOUNT_ID, B2_ACCOUNT_KEY, and HISTORY_OFFBOX_REPO=b2::restic-history - history-backup copy command completed successfully with data transferred to B2 - A test restore from the B2 backup completed successfully, proving data integrity [note:plex-server] - [ ] #55 adiaz@embeddedera.com / Administration: Save the restic password to the password manager — ~/.config/restic/password. Without it the history repo is unrecoverable after an OS-disk loss. Not on the rescue USB by design. (due 2026-10-14 OVERDUE) — Save the restic password to the password manager — ~/.config/restic/password. Without it the history repo is unrecoverable after an OS-disk loss. Not on the rescue USB by design.

Deliverables: - Password manager entry for restic backup password - Verification that restic can decrypt the history repository using the saved password Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Password manager contains an entry with the restic password from ~/.config/restic/password - Restic successfully accesses the history repository without prompting for password input [note:plex-server] - [ ] #57 adiaz@embeddedera.com / Administration: Delete the recovered-* trees (292 GiB, already out of parity) — gated on rk test proving the USB archive extracts, since compose + .env live nowhere else. (due 2026-10-14 OVERDUE) — Delete the recovered-* trees (292 GiB, already out of parity) — gated on rk test proving the USB archive extracts, since compose + .env live nowhere else.

Deliverables: - Proof that rk test passes on USB archive extraction - Deletion of recovered-* trees (292 GiB) - Confirmation that compose + .env are recoverable from archive Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Test output shows rk test passing for USB archive extraction - Filesystem shows recovered-* directories no longer exist - Archive contents verified to contain working compose configuration and .env file [note:plex-server] - [ ] #58 adiaz@embeddedera.com / Administration: 19 — replace the 78k-hour parity HGST, then add a second parity disk. 20 — a UPS (54 of 73 power cycles were unclean). 14 — a 92 mm intake fan whenever the case is open. (due 2026-10-14 OVERDUE) — 19 — replace the 78k-hour parity HGST, then add a second parity disk. 20 — a UPS (54 of 73 power cycles were unclean). 14 — a 92 mm intake fan whenever the case is open.

Deliverables: - HGST parity disk replaced and second parity disk installed - UPS unit installed and configured - 92 mm intake fan installed in case Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Storage array shows two functioning parity disks with no SMART warnings on the replacement HGST - UPS is powered on, connected to the system, and battery backup is functioning - 92 mm intake fan is physically mounted in the case and spinning when system is powered on [note:plex-server] - [ ] #79 adiaz@embeddedera.com / Administration: Revisit calendar invitations when service-account keys become possible (due 2026-10-14 OVERDUE) — The server cannot write to Google Calendar: the Google Workspace org policy blocks service-account key creation (iam.disableServiceAccountKeyCreation), so there is no credential the server can hold. Working approach today: meeting invitations go out as .ics calendar attachments emailed from adiaz@embeddedera.com, and the normal calendar client handles reminders. Costs nothing and needs no key. Revisit if the org policy is relaxed, or if a per-user OAuth consent flow is worth building. See ~/Notes/projects/meetings-and-tasks.md (Phase 3).

Deliverables: - Decision record on calendar invitation approach viability - Updated Phase 3 notes in meetings-and-tasks.md with reassessment findings Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A written decision (in Done comment or attached file) stating whether to pursue service-account keys, per-user OAuth, or maintain current .ics attachment approach - notes-contains: projects/meetings-and-tasks.md "Phase 3" [note:projects/meetings-and-tasks.md] - [ ] #80 yrosado@embeddedera.com / Administration: Book the CPA hour, and add the direct-sales question (due 2026-10-01 OVERDUE) — Decided path in projects/embeddedera-business.md: one hour with a CPA before the first invoice goes through the new system. Add a second question now: what changes when we sell direct from embeddedera.com rather than through eBay? On eBay the marketplace collects and remits sales tax; on our own storefront that obligation becomes ours. Blocks: ledger choice, NC sales-and-use registration, E-595E resale certificate, the storefront, and all of Finance.

Absorbed task 34 on 2026-09-14: the accounting scout's unverified numbers are exactly what the CPA hour (task 80) settles; carrying them separately just invites acting on them.

Deliverables: - CPA hour booking confirmation - Direct-sales tax question added to projects/embeddedera-business.md Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Calendar invitation or booking record shows one hour scheduled with a CPA before first invoice processing - notes-contains: projects/embeddedera-business.md "what changes when we sell direct from embeddedera.com" [plan:projects/platform-preflight.md] - [ ] #83 yrosado@embeddedera.com / Administration: Decide the public mailing address (due 2026-10-14 OVERDUE) — Deliverables: - Public mailing address decision document - Address recorded in company records or system Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A written decision on the public mailing address exists and is documented - The chosen public mailing address is stored in the appropriate company system or database [plan:projects/platform-preflight.md] - [ ] #85 adiaz@embeddedera.com / Administration: Add Yara through the admin People card as sales,finance (due 2026-10-14 OVERDUE) — So the second person exists before anything is designed around assignment, notification and segregation of duties. admin.embeddedera.com, People card.

Not done as written. Yara exists in people.yml as sales, purchasing — not sales, finance. She has a Kanboard account and now receives assignment emails. If she should hold finance (which would give her the books at /books), that is a permission change worth making deliberately.

Deliverables: - Yara's People card record with sales and finance roles - Updated people.yml file with Yara's corrected roles Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: url-contains: admin.embeddedera.com "Yara" and roles include "sales" and "finance" - Check by hand: file: people.yml contains entry for Yara with roles: sales, finance [plan:projects/platform-preflight.md] - [ ] #86 adiaz@embeddedera.com / Administration: Rehearse a restore from backup, once (due 2026-10-14 OVERDUE) — erp-backup already covers InvenTree, Vaultwarden and the assistant sqlite, age-encrypted to R2, and rescue-kit exists — but a restore that has never been run is a rumour. Do it once before Kanboard is added to the list of things that would need restoring. Process: Notes/map/processes/rescue-build.md.

Progress: Rehearsed 2026-09-13 and it passes — but the drill was only checking InvenTree, so it was proving a third of the restore. erp-backup verify now also opens the Kanboard, assistant and Vaultwarden sqlite copies from the decrypted archive and counts rows: 141 tasks, 141 assistant rows, 14 vault ciphers, alongside the existing 10 part categories and 20 stock locations. It runs weekly at 06:15 Sunday from cron. Left open for you to do one yourself at least once — knowing the restore works is not the same as having done one.

Deliverables: - A complete restore from backup executed manually following rescue-build.md - Verification record confirming all four databases restored correctly (InvenTree, Kanboard, assistant, Vaultwarden) Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Done comment documents the manual restore process was followed, including decryption of age-encrypted archive from R2 and confirmation of data integrity for all systems - Done comment includes row counts or checksums confirming: 10+ part categories and 20+ stock locations in InvenTree, 141+ tasks in Kanboard, 141+ rows in assistant sqlite, and 14+ vault ciphers in Vaultwarden [plan:projects/platform-preflight.md] - [ ] #87 adiaz@embeddedera.com / Administration: Decide the platform-work budget before 11 November (due 2026-11-01) — projects/platform-preflight.md: these plans are three to four weeks of building and the tester product and PCB Carolina are not in that number. Decide how many days between now and the show belong to internal platform work. Recommended cut: do the function split, the CPA hour and Kanboard phases 1-3; defer the AI proposal pipeline, the notebook site, the storefront and the department job classes until after November.

Deliverables: - Budget decision document in projects/platform-preflight.md - Record of platform-work days allocated before 11 November Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - notes-contains: projects/platform-preflight.md "platform-work budget" - A Done comment or attachment shows the number of days decided for internal platform work between now and the show, with explicit list of which work is in scope (function split, CPA hour, Kanboard phases 1-3) and deferred (AI proposal pipeline, notebook site, storefront, department job classes). [plan:projects/platform-preflight.md] - [ ] #88 yrosado@embeddedera.com / Administration: Get general liability and product liability insurance (due 2026-10-14 OVERDUE) —

Absorbed task 137 on 2026-09-14: duplicates task 88 (insurance). The Hiscox/Next/Thimble shortlist from here is now on 88.

Shortlist from the merged task: Hiscox / Next / Thimble for GL + product liability + E&O quotes.

Deliverables: - Insurance quotes comparison document from Hiscox, Next, and Thimble - Selection decision record identifying chosen provider(s) - Insurance policy documents or confirmation of coverage Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A written comparison of GL, product liability, and E&O quotes from the three shortlisted providers exists in attachments or notes - A record of which provider was selected and why is documented in the task's Done comment or attachments - Proof of active insurance coverage (policy number, effective date, coverage summary) is attached or linked [plan:projects/platform-preflight.md] - [ ] #89 adiaz@embeddedera.com / Administration: Write terms of sale and a warranty statement (due 2026-10-14 OVERDUE) — SOP-014 covers RMA mechanics, not the commitment. What is the tester's warranty, and what happens on a return outside it?

Draft written 2026-09-14 — ~/Notes/projects/terms-and-warranty.md, readable at notebook.embeddedera.com.

The recommendation is NOT a single one-year warranty, because three different things are sold and the risk is not the same:

What Designed by Warranty
Our own products us 1 year, materials and workmanship
Assembly of a customer's design the customer 90 days, workmanship only
Design/firmware/software services us 90 days to re-perform

A blanket year on everything would quietly promise that a CUSTOMER's design will work for a year — a promise this shop cannot keep and no contract manufacturer makes.

The clause that matters most for a two-person shop is the liability cap: total liability limited to the amount paid. A $4,000 assembly job that ends up in a product failing in the field can generate a claim far larger than the job.

Before it goes live: an attorney reads it (the implied-warranty disclaimer, the cap, the critical-use clause — a disclaimer must be conspicuous to be effective and that is state-specific); product liability insurance is in place (task 88 — the cap handles contract claims, not someone injured by a product); and it is published and cited on every quote and invoice, because a warranty nobody was shown is hard to enforce.

Deliverables: - Terms of sale and warranty statement document - Attorney legal review and approval - Product liability insurance policy verification - Publication and integration into quotes and invoices Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - notes-contains: projects/terms-and-warranty.md "1 year" - Attorney has reviewed and approved the document; approval noted in Done comment or attachment - Product liability insurance is active and covers the liability cap; policy reference provided in Done comment - Document is published at notebook.embeddedera.com and cited on at least one quote or invoice template [plan:projects/platform-preflight.md] - [ ] #90 adiaz@embeddedera.com / Administration: Decide customer data handling: what we hold, where, how long (due 2026-10-14 OVERDUE) — Customer designs and files. Matters the first time a customer asks, and they will. Feeds a section in SOP-012.

Deliverables: - Customer data handling policy document - Data retention schedule with specific hold periods - Storage location and security controls specification - SOP-012 section on customer data handling Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Policy document exists describing what customer data is held and why - Retention schedule specifies how long each data category is kept - Storage locations and security controls are documented - SOP-012 has been updated with the customer data handling section [plan:projects/platform-preflight.md] - [ ] #91 adiaz@embeddedera.com / Administration: Decide retention periods for logs and transcripts (due 2026-10-14 OVERDUE) — Chat history, prompt logs, task events and AI proposal transcripts all accumulate, and once there is a second employee some of it is activity monitoring. Decide the lifetime of each and record it in SOP-010 and SOP-017 before there is a year of it.

Deliverables: - Retention period decision document for logs and transcripts - Updated SOP-010 with retention policies - Updated SOP-017 with retention policies Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A written decision exists specifying retention periods for chat history, prompt logs, task events, and AI proposal transcripts - Check by hand: file: SOP-010 contains retention period specifications for each log type - Check by hand: file: SOP-017 contains retention period specifications for each log type [plan:projects/platform-preflight.md] - [ ] #98 adiaz@embeddedera.com / Administration: Build the AI proposal pipeline (due 2026-10-14 OVERDUE) — projects/ai-across-departments.md and task-board.md. Sandbox run, proposal report as a downloadable file plus an email, per-item review with no approve-all, apply with optimistic concurrency, outcome report. Everything else in the AI plan depends on this existing.

Deliverables: - Proposal pipeline implementation in projects/ai-across-departments.md - Sandbox run execution log - Proposal report downloadable file - Proposal report email sent to stakeholders - Outcome report with per-item review results and optimistic concurrency application Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - notes-contains: projects/ai-across-departments.md "proposal pipeline" - Sandbox run completed successfully with logs attached - Downloadable proposal report file exists and is accessible - Email confirmation of proposal report sent to project stakeholders - Outcome report documents per-item review decisions and optimistic concurrency application results [plan:projects/platform-preflight.md] - [ ] #109 adiaz@embeddedera.com / Administration: ✱ Compliance audit of the 3 products (FCC for any radio — record modular FCC IDs on the parts in InvenTree; listed supplies for mains; UN38.3/hazmat for batteries; CE/RoHS/WEEE only if selling to the (due 2026-10-14 OVERDUE) — ✱ Compliance audit of the 3 products (FCC for any radio — record modular FCC IDs on the parts in InvenTree; listed supplies for mains; UN38.3/hazmat for batteries; CE/RoHS/WEEE only if selling to the EU). Angel: list what each product contains; Claude: checklist + label requirements per product.

Deliverables: - Product contents list documenting components for each of the 3 products - Compliance checklist with label requirements per product - InvenTree records with modular FCC IDs for radio components Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Angel has documented what each product contains in the Done comment or attachments - Claude has produced a compliance checklist and label requirements per product in the Done comment or attachments - InvenTree parts records have been updated with FCC ID information for applicable radio components [kanboard] - [ ] #128 adiaz@embeddedera.com / Administration: names of the 3 products and roughly how many part numbers each BOM has (sizing). (due 2026-10-14 OVERDUE) — names of the 3 products and roughly how many part numbers each BOM has (sizing).

Deliverables: - A list in the ERP (or ~/Notes/projects/) naming the three products and the part-number count of each BOM Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The Done comment names the three products and gives a part count for each [note:mrp] - [ ] #129 adiaz@embeddedera.com / Administration: does the Universal Tester already write results anywhere (CSV? log?) — that is the integration point for phase 3. (due 2026-10-14 OVERDUE) — does the Universal Tester already write results anywhere (CSV? log?) — that is the integration point for phase 3.

Deliverables: - Written summary of Universal Tester's current output capabilities - Identification of existing result file format(s) and location(s) Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A notes document or Done comment describes where the Universal Tester currently writes its results (file paths, formats, or systems). - The phase 3 integration point is clearly named (CSV file path, log file path, database table, API endpoint, or other output mechanism). [note:mrp] - [ ] #130 adiaz@embeddedera.com / Administration: who else needs a login, and what should they see (inventory only? orders?). (due 2026-10-14 OVERDUE) — who else needs a login, and what should they see (inventory only? orders?).

Deliverables: - A written decision document listing all user roles that need login access - A permissions matrix specifying what each role can view (inventory, orders, etc.) - A record of stakeholder consultation on access requirements Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A document exists (in notes, attachment, or shared file) that names each required user role and their login need - A matrix or table exists that maps each role to specific data access (e.g., 'Warehouse: inventory only', 'Sales: inventory + orders') - Evidence exists that relevant stakeholders were consulted before finalizing the access list [note:mrp] - [ ] #131 adiaz@embeddedera.com / Administration: fill the 7 empty Login entries in Vaultwarden (Tesla dev, Cloudflare, GitHub, both Googles, DuckDNS, NordVPN) and set up the iOS app + autofill. (due 2026-10-14 OVERDUE) — fill the 7 empty Login entries in Vaultwarden (Tesla dev, Cloudflare, GitHub, both Googles, DuckDNS, NordVPN) and set up the iOS app + autofill.

Deliverables: - 7 filled Login entries in Vaultwarden (Tesla dev, Cloudflare, GitHub, Google personal, Google work, DuckDNS, NordVPN) - Vaultwarden iOS app installed and configured on device - iOS autofill integration enabled and tested with at least one Login entry Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - All 7 Login entries in Vaultwarden contain username and password fields with no empty required fields - Vaultwarden app appears in iOS Settings > Passwords and Keychain menu and can unlock with device authentication - Autofill suggestion appears when tapping a password field in Safari or another app on the iOS device

2026-09-15: also add the Nexar client id + secret (values in ~/.config/nexar/env on Plex) — SOP-020 step 3, no vault CLI on the server. [note:plex-server] - [ ] #132 adiaz@embeddedera.com / Administration: Vaultwarden 2FA (Angel): web vault → Settings → Security → Two-step login: authenticator app + passkey; save the recovery code on paper with the master password. Email 2FA needs SMTP (Gmail app passwo (due 2026-10-14 OVERDUE) — Vaultwarden 2FA (Angel): web vault → Settings → Security → Two-step login: authenticator app + passkey; save the recovery code on paper with the master password. Email 2FA needs SMTP (Gmail app password) — not configured yet.

Deliverables: - Vaultwarden account with authenticator app 2FA enabled - Vaultwarden account with passkey 2FA enabled - Recovery code written on paper stored with master password - Note documenting 2FA setup completion and SMTP limitation Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Web vault Settings → Security → Two-step login shows authenticator app as active method - Web vault Settings → Security → Two-step login shows passkey as active method - Recovery code is physically recorded on paper and secured with master password documentation - notes-contains: tasks/vaultwarden-2fa.md "authenticator app" and "passkey" and "recovery code" [note:plex-server] - [ ] #134 adiaz@embeddedera.com / Administration: Watch the first real firing (next Wed swim block 11:30–12:30, or the next Square barbershop reminder on a Thursday) in ~/.local/state/tesla-automation/cron.log and ntfy; then tune LEAD_MINUTES / (due 2026-10-14 **OVERDUE**) — Watch the first real firing (next Wed swim block 11:30–12:30, or the next Square barbershop reminder on a Thursday) in~/.local/state/tesla-automation/cron.logand ntfy; then tuneLEAD_MINUTES/END_LEAD_MINUTESin~/.config/tesla/envor the 11:30–12:30 window in~/.claude/routines/_shared-facts.md` from Angel's feedback.

Deliverables: - Log entry in ~/.local/state/tesla-automation/cron.log showing first real firing - ntfy notification received for the firing event - Tuned LEAD_MINUTES and END_LEAD_MINUTES values in ~/.config/tesla/env - Updated swim block window or routine timing in ~/.claude/routines/shared-facts.md _Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - file: ~/.local/state/tesla-automation/cron.log - ntfy notification delivered and logged for firing event - file: ~/.config/tesla/env - notes-contains: _shared-facts.md "11:30" [note:tesla-automation] - [ ] #135 adiaz@embeddedera.com / Administration: put TESLA_CLIENT_SECRET, TESLA_REFRESH_TOKEN and the calendar's secret iCal URL (all in ~/.config/tesla/env) into the password manager; the iCal URL can be reset from Google Calendar settings if (due 2026-10-14 OVERDUE) — put TESLA_CLIENT_SECRET, TESLA_REFRESH_TOKEN and the calendar's secret iCal URL (all in ~/.config/tesla/env) into the password manager; the iCal URL can be reset from Google Calendar settings if it ever leaks.

Deliverables: - Password manager entry for TESLA_CLIENT_SECRET - Password manager entry for TESLA_REFRESH_TOKEN - Password manager entry for calendar's secret iCal URL Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - TESLA_CLIENT_SECRET from ~/.config/tesla/env is stored in the password manager - TESLA_REFRESH_TOKEN from ~/.config/tesla/env is stored in the password manager - Calendar's secret iCal URL from ~/.config/tesla/env is stored in the password manager [note:tesla-automation] - [ ] #136 adiaz@embeddedera.com / Administration: Parked (Angel: "don't do anything yet"): weather gate via open-meteo (skip cooling on mild days), forgot-to-plug / low-battery ntfy at night, nightly charge management, Garmin-linked pre-cool, daily p (due 2026-10-14 OVERDUE) — Parked (Angel: "don't do anything yet"): weather gate via open-meteo (skip cooling on mild days), forgot-to-plug / low-battery ntfy at night, nightly charge management, Garmin-linked pre-cool, daily planner pass via the claude.ai connector, work calendar (adiaz@embeddedera.com) as a second CALENDAR_ICS_URL.

Deliverables: - A decision document stating whether this task should proceed or remain parked - Documentation of the feature scope (weather gating, notifications, charge management, calendar integration) - A prioritized backlog or requirements list for the features mentioned Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The Done comment or attached note clarifies Angel's go/no-go decision on this parked task - A file or note describes the five feature areas: open-meteo weather gate, night notifications, charge management, Garmin pre-cool, and calendar integration - A prioritized list of features is attached or noted, ready for sprint planning when unparked [note:tesla-automation] - [ ] #138 adiaz@embeddedera.com / Administration: ✱ Contracts pack: design-services terms (IP on payment, liability cap, acceptance, payment), mutual NDA, contractor agreement with IP assignment, product terms of sale + warranty + returns. Claude dra (due 2026-10-14 OVERDUE) — ✱ Contracts pack: design-services terms (IP on payment, liability cap, acceptance, payment), mutual NDA, contractor agreement with IP assignment, product terms of sale + warranty + returns. Claude drafts from standard templates; Angel has a lawyer review once.

Terms of sale + warranty are being done under task 89 (draft on the notebook, Yara reviewing on 174). This task keeps the rest of the pack: design-services MSA, mutual NDA, contractor agreement with IP assignment.

Deliverables: - Design-services MSA document with IP-on-payment, liability cap, acceptance, and payment terms - Mutual NDA agreement document - Contractor agreement document with IP assignment clause - Legal review completion by external lawyer Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A design-services contract file exists with sections covering IP ownership upon payment, liability limitations, acceptance criteria, and payment terms - A mutual NDA document exists with standard confidentiality and non-disclosure provisions - A contractor agreement document exists that includes IP assignment language transferring intellectual property rights to the company - External lawyer has reviewed all three documents and provided sign-off or comments in the task Done section or attachments [note:embeddedera-business] - [ ] #140 adiaz@embeddedera.com / Administration: Business phone number (Angel, 2026-09-11): Google Voice personal is free (US number, rings the phone, voicemail transcription, spam screening) — legitimate enough for the site and Business Profile; Go (due 2026-10-14 OVERDUE) — Business phone number (Angel, 2026-09-11): Google Voice personal is free (US number, rings the phone, voicemail transcription, spam screening) — legitimate enough for the site and Business Profile; Google Voice for Workspace is $10/user/month if it must live under the company account; Twilio (~$1.15/month per number + per-minute, API key) if we ever want call routing/SMS automation from the server. Recommendation: free Google Voice on angelgdo7 now, forward to the phone, list it on the site and the Business Profile; upgrade only if a second line or automation is needed.

Deliverables: - Google Voice account setup on angelgdo7 with business phone number - Business phone number listed on company website - Business phone number added to Google Business Profile - Decision record documenting phone solution choice and upgrade path Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Google Voice account created and configured with call forwarding to personal phone - Company website displays the Google Voice number in contact section - Google Business Profile shows the Google Voice number as primary contact - Notes entry documents recommendation (free Google Voice now, Workspace or Twilio upgrade path if needed) [note:embeddedera-business] - [ ] #142 yrosado@embeddedera.com / Administration: Business cards: design from the brand guide (front: mark + name + title; back: hello@embeddedera.com, embeddedera.com, embeddedera.com/book, QR to /quote). Print via a free-design + cheap-print route ( (due 2026-10-14 OVERDUE) — Deliverables: - Business card design file (front and back) - Printed business cards (physical delivery or proof) - Design source file or editable template Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Design incorporates brand guide mark, name, title on front; email, website, booking link (embeddedera.com/book), and QR code on back - Business cards printed and ready for distribution or print-shop proof received - Editable design file saved in project workspace for future updates [note:embeddedera-business] - [ ] #144 adiaz@embeddedera.com / Administration: Finish the gated file browser (files.embeddedera.com) (due 2026-10-14 OVERDUE) — Attempted 2026-09-13, backed out cleanly — nothing left running, files.lan untouched.

What is settled: a second Filebrowser instance is the right shape, NOT gating the existing one. The existing filebrowser mounts /home/angel as uid 1000, so it can read every API key and SSH key on the box; it must stay LAN-only. The new one sees /mnt/storage/EmbeddedEra and Storage-snapshots (read-only) and nothing else. Config and Caddyfile are kept at ~/torrentvpn/files-shop/.

Where it stuck: Filebrowser v2.32 proxy auth returns 401 even with users pre-created (adiaz, yrosado exist in its db), auth.method=proxy and auth.header=X-Remote-User set in the database, and the header arriving. Tried: auth in the config JSON (ignored), config set in the db, running without --config (the image's own /.filebrowser.json then wins). Next thing to try: a newer image, or the --auth.method flag on the command line, or check whether v2 proxy auth needs the header name lowercase.

Unrelated but worth doing at the same time: the built-in admin account in its database should be removed, the way Kanboard's was.

--- second attempt, 2026-09-13 --- Ruled out: users missing (both exist), the database not being found (the image's baked /.filebrowser.json points at /database.db, NOT the mounted one — fixed by overriding that file), and the auth setting not being stored (config cat --database ... confirms "Auth method: proxy" with header X-Remote-User).

Still 401 with the header present. Best remaining theory: whenever a JSON config file is present, Filebrowser v2 re-applies every setting including the ones the file omits, so auth.method silently reverts to "json" at each start. Next things to try, cheapest first: run with NO config file at all and only command-line flags; a newer image tag; or drop Filebrowser for something whose proxy-auth story is first-class.

Deliverables: - A running files.embeddedera.com instance with proxy authentication working for adiaz and yrosado - Database configuration record showing auth.method=proxy with X-Remote-User header, and admin account removed - Filebrowser container logs showing successful proxy auth header validation on login attempt Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A successful HTTP request to files.embeddedera.com with X-Remote-User: adiaz header returns 200 and shows user's allowed file tree - Check by hand: notes-contains: torrentvpn/files-shop "auth.method: proxy" AND no built-in admin account in the Filebrowser database - Container logs show the X-Remote-User header being read and accepted during authentication (not a 401 error) [kanboard] - [ ] #155 adiaz@embeddedera.com / Administration: Take the bookkeeping capture list to the CPA hour (due 2026-10-14 OVERDUE) — ~/Notes/projects/bookkeeping.md lists what a US LLC has to hand over and ends with eight specific questions for them: cash or accrual, whether inventory must be tracked and on what method, the capitalisation threshold, Section 179 on equipment already bought, whether NC sales-and-use registration is needed before the first direct sale, home office and vehicle, which ledger THEY want the data in, and the quarterly estimate schedule. Arriving with that list is what makes the hour cheap.

Deliverables: - Bookkeeping capture list document with eight specific CPA questions - Completed notes with answers from the CPA hour Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - notes-contains: projects/bookkeeping.md "cash or accrual" - The Done comment or attachments show the CPA's responses to all eight questions recorded [kanboard] - [ ] #156 adiaz@embeddedera.com / Administration: Collect W-9s before paying anyone, not in January (due 2026-10-14 OVERDUE) — Anyone paid $600 or more in a year needs a 1099-NEC, which needs a W-9. Collected up front it is a form; collected in January it is a chase. Nothing to build — a habit, and later an audit check that flags a contractor approaching the threshold with no W-9 on file.

Deliverables: - W-9 collection policy document - W-9 tracking record for all contractors paid $600+ - Audit check configured to flag contractors approaching $600 threshold without W-9 on file Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Policy document exists describing requirement to collect W-9s before first payment to any contractor - A record or checklist shows W-9s collected upfront for all contractors in current year who will receive $600+ - Audit check is active and will flag contractors approaching $600 annual payment threshold with no W-9 on file [kanboard] - [ ] #158 adiaz@embeddedera.com / Administration: Build the CPA handoff pack (due 2026-10-14 OVERDUE) — One button, one folder: summary, income.csv, expenses.csv, capital-items.csv, sales-tax.csv, inventory-valuation.csv, receipts/, statements/, and questions.md listing what could not be classified. Works whichever ledger is eventually chosen.

Deliverables: - CPA handoff pack folder with all required CSV files and subdirectories - summary document in the handoff pack - questions.md file listing unclassified items - One-button build process that generates the complete pack Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The handoff pack folder contains income.csv, expenses.csv, capital-items.csv, sales-tax.csv, inventory-valuation.csv, receipts/ subdirectory, and statements/ subdirectory - A human-readable summary exists in the handoff pack describing the financial data - Check by hand: file: questions.md exists and lists items that could not be classified - A documented build command or script exists that generates the complete handoff pack regardless of which ledger system is in use [kanboard] - [ ] #159 adiaz@embeddedera.com / Administration: Import Chase statements into the books (due 2026-10-14 OVERDUE) — Free, leaks nothing, and the CPA needs the statements anyway. Drop the CSV/QFX Chase exports into /books, parse the transactions, match them against confirmed expenses by date and amount, and show the unmatched ones to categorise — that reconciliation is what catches the expense nobody photographed. Blocked on one answer: business or personal account, and how many. An aggregator (Teller free tier, SimpleFIN ~$1.50/mo) would automate it but gives a third party continuous read access to an account with payment capability — a real decision, not a checkbox.

Deliverables: - CSV or QFX statement files in /books directory - Parsed transaction records matched against confirmed expenses - List of unmatched transactions with proposed categories - Decision document on business vs. personal account selection and aggregator trade-offs Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: file: /books contains Chase export files (CSV or QFX format) - Matched transactions appear in the books with date and amount aligned to confirmed expenses - Check by hand: notes-contains: projects/expense-reconciliation.md "unmatched transactions" showing transactions without confirmed expense matches - Check by hand: notes-contains: projects/account-decision.md "business account" or "personal account" with aggregator security assessment (Teller vs. SimpleFIN vs. manual) [kanboard] - [ ] #171 adiaz@embeddedera.com / Administration: Identify or revoke the orphaned openai-tunnel key (due 2026-10-14 OVERDUE) — ~/.config/openai-tunnel/runtime.env holds a CONTROL_PLANE_API_KEY dated 2026-08-18. Nothing on this machine references it — no script, no systemd unit, no container, no map card. Found by the new SOP-020.key-registered check on the day it was written.\n\nIt is recorded in credentials.yml as UNIDENTIFIED rather than deleted, because an orphaned key that turns out to be load-bearing is a worse morning than one that sits unused for another week.\n\nDo you recognise it? If not, revoke it at whatever service issued it and delete the file. A key nobody can account for is one nobody can revoke in a hurry, which is the whole point of the register.

Deliverables: - A written decision about the CONTROL_PLANE_API_KEY from ~/.config/openai-tunnel/runtime.env dated 2026-08-18 - Either the key revoked at its issuing service, or confirmation it is still in active use Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: notes-contains: credentials.yml "CONTROL_PLANE_API_KEY" contains a resolution (IDENTIFIED with service/purpose, or REVOKED) - Either file: ~/.config/openai-tunnel/runtime.env no longer exists, or credentials.yml documents the key's active service and owner [kanboard] - [ ] #172 adiaz@embeddedera.com / Administration: Build the channel adapter: InvenTree pushes stock, channels push orders back (due 2026-10-14 OVERDUE) — Follows the 2026-09-14 decision that InvenTree is master for stock. One adapter interface — read orders, write available quantity, reconcile and report drift — with eBay as the first implementation and Amazon and any future storefront as further ones. Deliberately NOT an eBay script: two copies of that logic is how the second channel takes as long as the first.\n\nreconcile.py becomes a drift check that raises a task rather than a source of truth. Items a channel sells that the shop never stocks stay that channel's business — the rule is per item, not per system. Still no second stock database.\n\nDepends on the eBay production cutover (projects/ebay-store.md) landing first.

Deliverables: - Channel adapter interface specification - eBay channel adapter implementation - Stock reconciliation drift check module - Integration documentation with examples for Amazon and future storefronts Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A design document or code module defining the adapter interface with methods for reading orders, writing available quantity, and reconciling drift - Working eBay adapter code that reads orders from eBay and pushes available quantities back using the common interface - reconcile.py refactored to perform drift checks that raise tasks rather than serve as source of truth - Documentation showing how to implement a new channel adapter (Amazon example) without duplicating eBay logic [kanboard] - [ ] #175 adiaz@embeddedera.com / Administration: Build a real vault check for SOP-020 (due 2026-10-14 OVERDUE) — SOP-020.key-in-vault was renamed key-fields because it only checked that register entries were complete — it never looked in Vaultwarden. A real check needs the vault's CLI (bw) with a scoped account, listing item names and comparing them to credentials.yml. Until then, rule 2 of SOP-020 is a habit, not a check.

Deliverables: - Vaultwarden CLI integration script for SOP-020 audit check - Vault credential inventory comparison logic - SOP-020 audit check implementation with real vault verification - Documentation of vault check methodology and scoped account setup Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A script or module exists that calls the bw CLI to list Vaultwarden items and parses the output - Logic exists to cross-reference Vaultwarden item names against credentials.yml entries - Check by hand: audit-check-passes: key-in-vault passes with actual vault data verification (not just completeness check) - Notes document explains the vault CLI setup, scoped account requirements, and how the check compares inventory [kanboard] - [ ] #183 adiaz@embeddedera.com / Administration: Fiverr seller profile created and service listings live (due 2026-10-14 OVERDUE) — Set up a Fiverr seller account and publish initial service offerings so we can accept gigs and build client relationships on that platform. This expands our service channels and makes us discoverable to customers already using Fiverr.

Raised from the intake page by adiaz@embeddedera.com on 2026-09-14.

Deliverables: - Fiverr seller account - Service listings (minimum 2) - Profile bio and portfolio link Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A live Fiverr profile URL accessible to the public - At least 2 published gig listings visible on the profile - Profile contains bio text and a link to our main site or portfolio

Open questions: - Which specific services should we list first (design, coding, consultation, etc.)? - Do we have branding assets (logo, photos, portfolio samples) ready to upload? - What is our target price range or hourly rate for these services? [intake] - [ ] #212 adiaz@embeddedera.com / Administration: Give the server read access to the supplier mail (app password on adiaz@, scoped to a label) so invoice PDFs and unit costs flow in automatically (due 2026-09-28 OVERDUE) — Every supplier sends the line items (part, quantity, unit price) only as a PDF attached to the order email: LCSC "Commercial Invoice" PDFs on the Shipped Notification, DigiKey "SALESORDER_EMAIL.pdf" on the PO Acknowledgement, Mouser likewise. The email bodies carry only totals. Claude's mailbox access in a session can read bodies but cannot download attachments, so today the costs cannot be pulled automatically.

The durable fix is server-side mailbox access with a credential, per Hard Rule 4 (a key Claude can operate): a Google Workspace app password for adiaz@embeddedera.com — purchasing@ is only an alias of it (myaccount.google.com → Security → 2-Step Verification → App passwords). The server never reads the whole mailbox: mail-pull reads ONE Gmail label, Intake, and a Gmail filter puts supplier order mail (digikey.com, mouser.com, lcsc.com, jlcpcb.com) under that label automatically; anything else you want read, you label Intake or forward to yourself with [intake] in the subject. With it, a timer on the server reads the mailbox over IMAP, saves every supplier invoice/acknowledgement PDF into the intake as a "Supplier bill", and a matcher writes the unit price and order number onto the matching stock items (SOP-005 Purchase price; SOP-023 for items counted in without a PO). It also feeds the books.

What to do: 1. Turn on 2-step verification for adiaz@embeddedera.com if it is not on, and create a Gmail label Intake with a filter for the four supplier senders. 2. Create an app password named "plex-mail-pull" (it is for IMAP read of the Intake label only) and hand it to Claude once (stored 0600 under ~/.config/mail-pull/env, in the Vaultwarden vault, and in the credentials register, SOP-020). 3. Claude builds mail-pull (IMAP, read-only, DigiKey/Mouser/LCSC senders, PDFs into intake) and the price matcher, sandbox first.

Deliverables: - App password for purchasing@ stored and registered - mail-pull timer running; the LCSC and DigiKey invoice PDFs from 2026 filed in intake - Unit price + order number on every stock item those invoices cover

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - file: /home/angel/.config/mail-pull/env - notes-contains: roles/credentials.yml "mail-pull" - The Done comment names how many invoices were pulled and how many stock items got a price [kanboard] - [ ] #215 adiaz@embeddedera.com / Administration: Vaultwarden: create the 'Emergency' collection and share it with Yara (refund, Pages rollback, registrar, Workspace admin, CPA number) (due 2026-09-29 OVERDUE) — The if-Angel-is-out page (https://notebook.embeddedera.com/decisions/if-angel-is-out/) names Yara as the emergency person, but she cannot act on refunds, a site rollback, the registrar or Workspace admin without the logins. In the Vaultwarden web vault: create an Organization collection 'Emergency', move or copy those five items into it, share it with Yara's vault account (read only). Phone app is enough.

Deliverables: - Collection 'Emergency' exists with the five items - Yara can open it from her own vault login

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The Done comment lists the five items in the collection and says Yara confirmed she can open it [kanboard] - [ ] #228 adiaz@embeddedera.com / Administration: SCM32 G0 48-pin units ordered and delivery confirmed (due 2026-09-22 OVERDUE) — The shop is running low on SCM32 G0 48-pin components and needs to place an urgent order to replenish stock. This is a critical inventory action to ensure production continuity and prevent project delays caused by parts shortage.

Raised from the intake page by adiaz@embeddedera.com on 2026-09-15.

Deliverables: - Purchase order for SCM32 G0 48-pin units - Supplier order confirmation with delivery date - Inventory record updated with new stock quantity

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A human confirms the PO has been submitted to the supplier with unit quantity and part number SCM32 G0 48-pin - A human confirms receipt of supplier's order acknowledgment email or document showing expected delivery date - A human confirms the inventory system (ERP or stock list) now reflects the ordered quantity as on-order or received

Open questions: - How many units of SCM32 G0 48-pin should be ordered? - Which supplier should this order go to, or do we have a preferred vendor already? - Is there a budget limit or approval process required before placing this order? [intake] - [ ] #234 adiaz@embeddedera.com / Administration: SOP: customer data handling & retention (due 2026-10-14 OVERDUE) — Customer-data handling and retention are recorded as approved decisions in the Notebook, but no controlled SOP currently covers them. SOP-012 Files and Shop Network covers NAS access and shares, not customer-data handling. SOP-010 Assistant Use contains a draft 12-month full-text log rule, which does not match the approved retention decision's 30-day assistant-transcript and 90-day server-log defaults. SOP-017 Task Register has no retention-period section. SOP-000 Document Control says SOPs live in the engineering vault, use version/status/revision history, and non-SOP decisions live in Notes/decisions and publish to the Notebook.

Deliverables: - A controlled, published SOP or explicitly approved SOP amendments covering customer data handling and the approved retention schedule, using the records at https://notebook.embeddedera.com/decisions/customer-data/ and https://notebook.embeddedera.com/decisions/retention/ as the source decisions. - Revision history and status/version evidence per SOP-000. - Updates to tasks #90 and #91 with the canonical SOP URL and verification evidence.

Verify: - The controlled SOP or amendments are published at a reachable URL and have the SOP-000 document-control header. - The customer-data and retention decision pages are cited; no additional policy terms are invented. - SOP-010 and SOP-017 either contain the required canonical retention references or are updated as directed by the controlled SOP. - Tasks #90 and #91 have comments citing the controlled SOP and are only moved to Review after the human checks pass.

This task is the SOP gap blocker for #90 and #91; do not mark those tasks done by treating the Notebook decisions as completed SOP updates. [kanboard] - [ ] #241 adiaz@embeddedera.com / Administration: Expose tested ERP actions to Yara with per-operation permission checks (due 2026-10-17 OVERDUE) — Administration + Engineering worker. Reuse existing assistant/actions.py, pending confirmation and audits. Verify live Yara permissions; resolve mixed Sales/Purchasing roles per operation. Add PO receiving, stock count/transfer and read capacity only within authorized scope. No admin token grants.

Plan: https://notebook.embeddedera.com/projects/business-operations-automation/ Due date: SOP-017 default 30-day review horizon; not a delivery estimate.

Deliverables: - Versioned action schemas, sandbox-tested receiving/count/transfer actions and Yara pilot

Checked automatically by the register when this card reaches Review. Not steps for you. Verify: - Allowed/denied identities, spoofed actor, partial/over receipt, replay, expiry and timeout retries covered; repeated confirmation cannot duplicate stock. [kanboard] - [ ] #267 adiaz@embeddedera.com / Administration: Prepare owner-managed Google, Meta and Apple customer-login applications (due 2026-10-19 OVERDUE) — Inventory existing company developer accounts without reusing staff/Postiz OAuth clients blindly. Prepare dedicated store apps, exact callbacks, consent screens, required public policy/deletion URLs and test users. For Apple verify membership, primary App ID, Services ID, signing key and private-relay sender setup. Record provider review requirements and approvals. Secrets follow SOP-020, never notes/chat. No purchase is authorized by this task.

Plan: https://notebook.embeddedera.com/projects/store-social-login/ Depends on: #266 Owner: Angel, default department triage owner; Engineering implementation may be delegated when started. Planning only today. Default review date 2026-10-19 (SOP-017), not a launch promise.

Deliverables: - Credential-register references without secret values - app ownership and callback checklist for each provider - Apple cost and readiness decision

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Each provider has a named company owner and recovery method - Callback and policy requirements are documented - Keys exist only in approved secret storage or a precise blocker is recorded [kanboard] - [ ] #298 Administration: Fix job pod-publish — Job: pod-publish (cron, area oddly)

What it is: Publishes approved products (only when the shop is live) and sets Etsy attribution and sections.

Schedule: Every day at 09:00 (0 9 * * *)

Last 3 runs: - 2026-10-01T09:00:02-04:00: ok in 6s - 2026-10-02T09:00:01-04:00: ok in 6s - 2026-10-03T09:00:02-04:00: failed rc=1 in 18s

What went wrong: Traceback (most recent call last): raise ChangeError(f'{owner[0]}/{owner[1]}: approved listing changes require an office ticket') pod.snapshots.ChangeError: ***: approved listing changes require an office ticket === 2026-10-03T09:00:19-04:00 end rc=1 in 18s === Exited with code 1.

Log tail (secrets masked):

  File "/home/angel/assistant/pod/run.py", line 1165, in <module>
    sys.exit(main(sys.argv))
             ^^^^^^^^^^^^^^
  File "/home/angel/assistant/pod/run.py", line 1127, in main
    out = publish(con)
          ^^^^^^^^^^^^
  File "/home/angel/assistant/pod/run.py", line 754, in publish
    out = golive(con, client)
          ^^^^^^^^^^^^^^^^^^^
  File "/home/angel/assistant/pod/run.py", line 793, in golive
    etsy.disclose(shop, listing_id, partners, section)
  File "/home/angel/assistant/pod/etsy.py", line 125, in disclose
    return call('PATCH', f'/shops/{shop}/listings/{listing_id}', form=[
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/angel/assistant/pod/etsy.py", line 99, in call
    guard_listing(method, path, form, **kwargs)
  File "/home/angel/assistant/pod/snapshots.py", line 566, in guard_listing
    raise ChangeError(f'{owner[0]}/{owner[1]}: approved listing changes require an office ticket')
pod.snapshots.ChangeError: ***: approved listing changes require an office ticket
=== 2026-10-03T09:00:19-04:00 end rc=1 in 18s ===

Claude: diagnose and fix; see job detail #job/pod-publish [kanboard] - [ ] #317 Administration: Fix job onboard-access-sync — Job: onboard-access-sync (cron, area admin)

What it is: Hourly makes Cloudflare Access gates follow people.yml and departments.yml (SOP-009).

Schedule: Every hour on the hour (0 * * * *)

Last 3 runs: - 2026-10-15T13:00:01-04:00: ok in 41s - 2026-10-15T14:00:01-04:00: ok in 44s - 2026-10-15T15:00:01-04:00: failed rc=1 in 30s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

  = Social scheduler: in sync
  = EmbeddedEra Notebook (pages.dev previews): in sync
  = EmbeddedEra Notebook: in sync
  = EmbeddedEra Tasks: in sync
  = EmbeddedEra Sandbox ERP: in sync
  = EmbeddedEra Sandbox Assistant: in sync
  = EmbeddedEra Reports: in sync
  = EmbeddedEra Admin: in sync
  = EmbeddedEra Assistant: in sync
  = EmbeddedEra Home: in sync
  = EmbeddedEra SOPs: in sync
  = EmbeddedEra ERP: in sync
  = App Launcher: in sync
  = EmbeddedEra SOPs (pages.dev previews): in sync
=== 2026-10-15T14:00:45-04:00 end rc=0 in 44s ===
=== 2026-10-15T15:00:01-04:00 start: /home/angel/.local/bin/onboard access-sync --yes ===
APPLYING access-sync
GET https://api.cloudflare.com/client/v4/accounts/6d610887b3346bd40693e01c6d9b6a74/access/apps/eb693788-7849-427b-8294-31071e96ab79/policies/6abdfb06-8bd8-40df-82b5-25c19ddd3a98 -> 500: {"success":false,"errors":[{"code":10500,"message":"Internal authentication error: internal server error"}],"messages":[],"result":null}

=== 2026-10-15T15:00:31-04:00 end rc=1 in 30s ===

Claude: diagnose and fix; see job detail #job/onboard-access-sync [kanboard] - [ ] #326 Administration: Fix job books-snapshot — Job: books-snapshot (user-timer, area admin)

What it is: Hourly snapshot of the books/invoice register used by Home and reports.

Schedule: -- :00:00 (-- :00:00)

Last 3 runs: - 2026-10-20T10:01:55-04:00: ok in 0s - 2026-10-20T11:01:35-04:00: ok in 5s - 2026-10-20T12:00:07-04:00: failed rc=1 in 0s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

Finished books-snapshot.service - Hourly snapshot of receipts and the expense register.
Starting books-snapshot.service - Hourly snapshot of receipts and the expense register...
Finished books-snapshot.service - Hourly snapshot of receipts and the expense register.
Starting books-snapshot.service - Hourly snapshot of receipts and the expense register...
Finished books-snapshot.service - Hourly snapshot of receipts and the expense register.
Starting books-snapshot.service - Hourly snapshot of receipts and the expense register...
Finished books-snapshot.service - Hourly snapshot of receipts and the expense register.
Starting books-snapshot.service - Hourly snapshot of receipts and the expense register...
Finished books-snapshot.service - Hourly snapshot of receipts and the expense register.
Starting books-snapshot.service - Hourly snapshot of receipts and the expense register...
Finished books-snapshot.service - Hourly snapshot of receipts and the expense register.
Starting books-snapshot.service - Hourly snapshot of receipts and the expense register...
Finished books-snapshot.service - Hourly snapshot of receipts and the expense register.
Starting books-snapshot.service - Hourly snapshot of receipts and the expense register...
Finished books-snapshot.service - Hourly snapshot of receipts and the expense register.
Starting books-snapshot.service - Hourly snapshot of receipts and the expense register...
books-snapshot.service: Main process exited, code=exited, status=1/FAILURE
books-snapshot.service: Failed with result 'exit-code'.
Failed to start books-snapshot.service - Hourly snapshot of receipts and the expense register.
books-snapshot.service: Triggering OnFailure= dependencies.

Claude: diagnose and fix; see job detail #job/books-snapshot [kanboard] - [ ] #2 adiaz@embeddedera.com / Engineering: Hand-fill MPN + LCSC on the 65 EmbeddedEra symbols lacking one; mark generics (jumpers, test points, headers) as n/a. List: scripting/embeddedera_audit.csv. (due 2026-10-14 OVERDUE) — Hand-fill MPN + LCSC on the 65 EmbeddedEra symbols lacking one; mark generics (jumpers, test points, headers) as n/a. List: scripting/embeddedera_audit.csv.

Deliverables: - Updated scripting/embeddedera_audit.csv with MPN and LCSC fields completed for all 65 symbols - Generic symbols (jumpers, test points, headers) marked as 'n/a' in MPN and LCSC columns Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - file: scripting/embeddedera_audit.csv - All 65 rows in scripting/embeddedera_audit.csv have either a valid MPN/LCSC value or 'n/a' for generic symbol types [note:KiCad] - [ ] #3 adiaz@embeddedera.com / Engineering: Symbol generation from LCSC/SnapEDA for new parts (easyeda2kicad / kandle). (due 2026-10-14 OVERDUE) — Symbol generation from LCSC/SnapEDA for new parts (easyeda2kicad / kandle).

Deliverables: - KiCad symbol files generated from LCSC/SnapEDA sources - Documentation of symbol generation process and tool usage - Verification that generated symbols match component specifications Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Symbol files exist in the project library directory with correct naming conventions - Process documentation or notes contain instructions for easyeda2kicad/kandle usage - Generated symbols have been validated against original LCSC/SnapEDA component data [note:KiCad] - [ ] #5 adiaz@embeddedera.com / Engineering: Symbol creation on request (plan 2026-09-09): passives = clone neighbour symbol in the matching Yageo lib and change Value/MPN/LCSC/Description/Datasheet only; non-standard values → nearest E96 (decid (due 2026-10-14 OVERDUE) — Symbol creation on request (plan 2026-09-09): passives = clone neighbour symbol in the matching Yageo lib and change Value/MPN/LCSC/Description/Datasheet only; non-standard values → nearest E96 (decide: default or ask). ICs/connectors = easyeda2kicad by LCSC → SnapEDA/UltraLibrarian zip via kandle → KiPart from datasheet pin CSV; land in a staging lib for review (decide). Then run field fill + kicad-cli parse check.

Deliverables: - Passive symbols cloned and modified in staging library - IC/connector symbols converted and imported in staging library - Field fill completed on all new symbols - KiCad parse check report Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Staging library contains new passive symbols with correct Value/MPN/LCSC/Description/Datasheet fields and E96-normalized values - Staging library contains new IC/connector symbols imported from KiPart with correct pin assignments - All symbols in staging library have required fields populated via field fill - KiCad CLI parse check passes with no errors on staging library symbols [note:KiCad] - [ ] #102 adiaz@embeddedera.com / Engineering: Add InteractiveHtmlBom and KiCanvas (due 2026-10-14 OVERDUE) — InteractiveHtmlBom is a production tool: a self-contained HTML BOM with click-to-highlight placement, for a tablet at the bench. KiCanvas is the embeddable web KiCad viewer asked for months ago.

Half done 2026-09-14: kicad-ibom works — InteractiveHtmlBom 2.12 in the pinned KiCad container, headless, output verified self-contained (325 kB, no external assets). KiCanvas is still to do and belongs with the engineering portal.

Deliverables: - InteractiveHtmlBom output file (self-contained HTML BOM with click-to-highlight placement) - KiCanvas integration in the engineering portal - Verification that both tools are production-ready and accessible from the bench tablet Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A self-contained HTML file exists, is ≥300 kB, contains no external asset references, and supports click-to-highlight board placement - KiCanvas viewer is deployed and accessible in the engineering portal with embeddable KiCad schematic/PCB rendering - Both tools are documented in the production workflow and confirmed working on a bench tablet device [plan:projects/platform-preflight.md] - [ ] #149 adiaz@embeddedera.com / Engineering: Review the 57 ERC/DRC findings kicad-check turns up (KiCad 10) (due 2026-10-14 OVERDUE) — kicad-check (KiCad 9.0.9 in a container) now runs ERC and DRC across all 44 schematics and boards in kicad-lib. After excluding what is meaningless for a fragment — unconnected pins and undriven power rails, which are the whole point of a reusable block — 21 errors remain across 16 projects, plus 45 warnings.\n\nBiggest: template/JLCPCB_1-2Layer (4 DRC), blocks/NRF24_smd (3), and a single error repeated across most of the LED blocks, which smells like one mistake copied.\n\nAn engineer needs to look at these once and decide which are real. Whatever is deliberate should be silenced properly in the design or the check, not left to be scrolled past every run.\n\nRun: kicad-check (human) or kicad-check --json (machine).

Corrected 2026-09-13, KiCad 10.0.5. The first run used KiCad 9 and undercounted: 21 errors. Re-run on 10.0.5 — the version actually used for design — gives 57 errors across 22 projects, 126 warnings. The repo is mixed: block schematics are still the v9 format (20250114) while the symbol library is already v10 (20251024), so a v9 CLI was reading a newer library.\n\nBiggest, and they look real: blocks/usb_c and blocks/EmbeddedEra.kicad_blocks/USB_C have 16 DRC errors each (11 clearance — one is 0.1984 mm against a 0.2 mm rule — 4 hole clearance, 1 invalid outline). Those are manufacturing problems, not ERC pedantry. Then JLCPCB template (4) and NRF24_smd (3).

Deliverables: - A summary document listing all 57 KiCad 10 errors with their locations, severity, and root cause classification - A record of which errors are real design flaws vs. which are false positives from fragment design patterns - A set of corrective actions (design fixes, ERC/DRC rule adjustments, or intentional suppressions) applied to the repository Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A document exists listing the 57 errors found by kicad-check 10.0.5, organized by project and error type, with engineering assessment for each - A decision matrix or notes record shows which errors require design correction and which are expected for block fragments - The kicad-lib repository reflects the chosen corrections: files modified to fix real issues, design rules adjusted, or error suppressions added; rerun of kicad-check shows resolved errors

Additional next-revision follow-up, approved by Angel 2026-09-18: - Robot-Cow-004B: triage/fix 4 ERC errors, 3 DRC errors and 10 DRC warnings; no changes to the current revision as part of portal work. - Complete or explicitly retire the three empty draft layouts excluded from #148: Remote_Universal/Hardware/Remote_Universal.kicad_pcb, Cow_Robot_Board/hardware/Robot_Tester/Robot_Tester.kicad_pcb, Universal_Tester/hardware/portable-universal-tester.kicad_pcb. Do not invent geometry to force an output. Evidence and scope record: https://notebook.embeddedera.com/projects/engineering-portal/ [kanboard] - [ ] #150 adiaz@embeddedera.com / Engineering: Write down the PCB design rules (net classes, widths, clearances) (due 2026-10-14 OVERDUE) — Blocks the template. Needs the fab's actual capability numbers for the process we buy — JLCPCB 2-layer and 4-layer — not folklore: track/space minimums, annular ring, hole sizes, edge clearance, and the impedance targets for USB (90 ohm diff) and any RF (50 ohm). An engineer's call, not a machine's. Plan: ~/Notes/projects/project-template.md.

Re-scoped 2026-09-14: the six net classes already exist in kicad-lib/template/EmbeddedEra_Project (UT003's template-update plan did it). What is left: pull JLCPCB's actual 2-layer and 4-layer capability numbers (track/space, annular ring, drill, hole-to-copper, edge, silkscreen, USB 90 Ω width/gap per stackup) into the table in ~/Notes/projects/project-template.md, and say whether the six classes stay. About an hour. Claude writes the .kicad_dru files from that.

Research done 2026-09-14 — six fabs' published minimums are tabulated in ~/Notes/projects/project-template.md ("Fab capabilities"), with URLs. Proposed decision for you to confirm: template default = the safe-everywhere set (0.20/0.20 track/space, 0.30 drill, 0.15 ring, 0.30 edge, 0.15 silk, 0.10 mask dam, 1 oz, no impedance assumed) which is what the template already has; plus a JLCPCB-specific .kicad_dru for boards needing headroom. Two items to verify by eye on jlcpcb.com: the 0.25 mm "annular ring" is probably via pad diameter, and the USB 90 Ω width/gap from the JLCPCB impedance calculator for the JLC04161H-7628 4-layer stackup and the 2-layer 1.6 mm board.

Deliverables: - PCB design rules table in ~/Notes/projects/project-template.md with JLCPCB 2-layer and 4-layer capability numbers (track/space, annular ring, drill, hole-to-copper, edge, silkscreen, USB 90 Ω width/gap) - Decision record in ~/Notes/projects/project-template.md confirming whether the six existing net classes remain or change - JLCPCB-specific .kicad_dru file for boards requiring capability headroom beyond the template default Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: notes-contains: projects/project-template.md "JLCPCB" and the table includes track/space, annular ring, drill, hole-to-copper, edge, silkscreen minimums, and USB 90 Ω width/gap for both 2-layer and 4-layer stackups with source URLs - Check by hand: notes-contains: projects/project-template.md "net class" with a written decision confirming the six classes in kicad-lib/template/EmbeddedEra_Project are appropriate or require changes - A .kicad_dru file exists in the template directory with JLCPCB-specific rules and is referenced in the template documentation [kanboard] - [ ] #153 adiaz@embeddedera.com / Engineering: Backfill product.yml for the Real Cow (due 2026-10-14 OVERDUE) — The Real Cow lives across five repos — Cow_Robot_Board, Cow_Remote, Cow_LCD, The_Real_Cow_Flasher, The_Real_Cow_Configurator — with no front door: nothing says which board revision ships with which firmware. It is the messy real case, so it is the test of whether the manifest idea works.

Deliverables: - product.yml file created in Cow_Robot_Board repo - product.yml file created in Cow_Remote repo - product.yml file created in Cow_LCD repo - product.yml file created in The_Real_Cow_Flasher repo - product.yml file created in The_Real_Cow_Configurator repo Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: file: Cow_Robot_Board/product.yml exists and declares board revision and firmware compatibility - Check by hand: file: Cow_Remote/product.yml exists and declares component version and compatibility - Check by hand: file: Cow_LCD/product.yml exists and declares component version and compatibility - Check by hand: file: The_Real_Cow_Flasher/product.yml exists and declares firmware relationships - Check by hand: file: The_Real_Cow_Configurator/product.yml exists and declares configuration relationships across all five repos [kanboard] - [ ] #224 adiaz@embeddedera.com / Engineering: Product: Wi-Fi dashcam drive for the Tesla — a USB drive the car records to, that uploads the clips to the home NAS when it is on the house Wi-Fi (due 2026-12-14) — Angel's idea (2026-09-15): a flash drive for the Tesla's dashcam/Sentry USB port that also has Wi-Fi, so when the car is home the recordings upload themselves to the NAS. No more pulling the stick.

What exists already (Hard Rule 1): TeslaUSB (github.com/marcone/teslausb) — an open-source project that does exactly this on a Raspberry Pi Zero 2 W: the Pi presents itself as a USB drive to the car, and when it sees the home Wi-Fi it syncs the clips to a NAS share (CIFS/SMB), archives Sentry events, and can even keep music on a second partition. Thousands of users, years of car-specific fixes (Tesla's write patterns, the 'drive removed' handling, thermal). The product path starts by using it, not rebuilding it.

The hard constraints a product must meet: - Tesla requires a USB 2.0 high-speed drive with sustained writes of at least 4 MB/s (dashcam writes 4 camera streams). A full-speed USB device (ESP32-S3: 1.5 MB/s) cannot do it. Candidates: Raspberry Pi Zero 2 W / CM4-class SoC, or the ESP32-P4 (USB 2.0 HS + SD/eMMC, Wi-Fi through an ESP32-C6 companion) for a low-cost custom board. - Power and heat: the port stays powered in Sentry mode; a parked car in summer is 60 °C+. Automotive-ish temperature parts, no LiPo. - The clips must never be corrupted while the car is writing: sync only when the car has stopped writing (TeslaUSB solves this with snapshots).

Plan: spike with the community project in Angel's own car first (weeks 1–2), then decide the hardware architecture (week 3), then product design through Project_Template (SOP-021/022). Sub-tasks are the children of this card. Product notes: https://notebook.embeddedera.com/projects/products-business/ (this is product #4/#5 material: real demand, no lab-grade radio certification if the Wi-Fi module is pre-certified).

Deliverables: - A working prototype in Angel's Tesla that uploads to the NAS unattended - An architecture decision (Pi-based vs ESP32-P4 board) with cost and margin - A product repo from Project_Template with the first board revision

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The Done comment links the prototype log, the architecture decision note and the product repo [intake] - [ ] #225 adiaz@embeddedera.com / Engineering: Spike: run TeslaUSB on a Pi Zero 2 W in Angel's Tesla, syncing to the NAS for two weeks (due 2026-10-06 OVERDUE) — Prove the idea with the community project before designing anything (github.com/marcone/teslausb). Parts (buy two kits, ~$38 each, plus one MangoPi MQ-Dual ~$12 as the T113 dev board — plan section 13): Raspberry Pi Zero 2 W, a 128 GB A2 microSD, a short USB-A to micro-USB data cable (the port powers the Pi and carries data), optionally a heatsink. Follow the TeslaUSB one-step setup, point it at a share on the NAS (a new SMB share teslacam on the Plex box; Claude sets it up on request), set the home Wi-Fi, plug into the car's dashcam port.

Watch for two weeks: does every Sentry event and saved clip arrive on the NAS by the next morning; any 'drive removed' warnings on the screen; how hot the Pi gets on a sunny day (TeslaUSB logs temperature); how long a full sync takes on the house Wi-Fi.

Deliverables: - Pi Zero 2 W with TeslaUSB in the car - NAS share teslacam receiving clips unattended - A two-week log: events synced per day, failures, max temperature, sync time

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - file: /mnt/storage/EmbeddedEra/teslacam - The Done comment gives the two-week numbers and the failures seen [kanboard] - [ ] #226 adiaz@embeddedera.com / Engineering: Decide the product hardware: Pi-class SoC vs ESP32-P4 + C6 board (cost, margin, heat, USB high-speed write rate) (due 2026-10-20 OVERDUE) — After the spike: write the decision. Options — (A) a Pi Zero 2 W (or CM4-lite) in our enclosure with our firmware image and branding: fastest to market, ~$20 BOM, thin margin, supply risk; (B) our own board on ESP32-P4 (USB 2.0 HS device + SD/eMMC) with an ESP32-C6 module for Wi-Fi (pre-certified module → no FCC lab), ~$9 BOM, real margin, a quarter of firmware work (TinyUSB MSC on the P4 + snapshot/sync logic ported from TeslaUSB's approach); (C) an off-the-shelf Wi-Fi SD/USB product rebranded — check if any still exists (ez Share/FlashAir are dead). Form factor is a flash drive (Angel): ~50 × 18 mm on a USB-A plug, eMMC preferred, metal case as heatsink — option A cannot meet it, so A is the fallback only if B fails the write-rate or heat test. Measure or cite the sustained MSC write rate of each; the car needs ≥ 4 MB/s with headroom, and heat at 60 °C ambient.

Deliverables: - Decision note in Notes/decisions/ with the option chosen, BOM cost, expected price (3× rule from products-business.md), and the risks - Measured or sourced USB write rate for the chosen platform

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - notes-contains: decisions/dashcam-drive-hardware.md "Decided" - The Done comment states the option and the price [kanboard] - [ ] #227 adiaz@embeddedera.com / Engineering: Market and compliance check for the Wi-Fi dashcam drive: who sells one, at what price, and what paperwork a Wi-Fi USB product needs (due 2026-10-06 OVERDUE) — Before designing: (1) what exists — search Tindie, Amazon, the Tesla forums for 'TeslaCam wifi drive', note prices and complaints (the complaints are the spec); (2) how many Teslas have this need (dashcam + Sentry users) and what they pay for a plain 128 GB drive today; (3) compliance: with a pre-certified Wi-Fi module the product needs an FCC Part 15 declaration referencing the module's grant and a RoHS statement — confirm that with the module vendor's grant conditions; a Tesla-specific claim ('works with Tesla') is a trademark question for the terms review (task 89).

Deliverables: - A one-page market note: competitors, prices, top five complaints, target price - Compliance paragraph: what the product needs and what it does not

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - notes-contains: projects/dashcam-drive.md "Competitors" - The Done comment gives the target price and the compliance route [kanboard] - [ ] #229 adiaz@embeddedera.com / Engineering: Robot Cow: add manufacturer and MPN to the 8 generically specified parts (due 2026-10-15 OVERDUE) — Concept: on the Robot Cow BOM (EE-A-0002-A, board hardware/Robot-Cow-004B) eight parts are specified generically (colour + footprint for the LEDs, value + package for the rest). That is acceptable for ordering, but each should get a manufacturer part so purchasing does not have to guess. Decision: https://notebook.embeddedera.com/decisions/bom-alternates/

Note (2026-09-16): the production board moved from hardware/Robot Cow 4.0.1 to hardware/Robot-Cow-004B. D1s SOD-123 zener (EE-C-0171) is no longer used on the shipping board; it is now a MiniMELF ZMM5V1 (EE-C-0182), which also has no manufacturer part yet. Added to the list below in EE-C-0171s place.

Deliverables: - Add a manufacturer part (manufacturer + MPN) from the last Cow order or the reel on the shelf to: EE-C-0182 (D1 zener 5.1V MiniMELF, was EE-C-0171 SOD-123 before the 004B move), EE-C-0001 (D10 1N4001W), EE-C-0173 (D14 red LED 0603), EE-C-0174 (FB1 220R 0603), EE-C-0065 (J10 programming header), EE-C-0131 (J11 USB-C 16P), EE-C-0069 (RT1 polyfuse), EE-C-0143 (U5 XC6206P332MR).

Verify: - Check by hand: each of the eight parts shows at least one manufacturer part in the ERP [kanboard] - [ ] #230 adiaz@embeddedera.com / Engineering: Cricket 008: merge the branch, build and flash one board over UPDI, measure standby current (due 2026-09-30 OVERDUE) — Concept: the current Cricket is board 008 on branch no-accelerometer (ATtiny3217, piezo + vibration motor, firmware 008 already drives the motor). Merge it so the portal and fab pack see it, then prove one board end to end. Plan: https://notebook.embeddedera.com/projects/cricket-product/

Deliverables: - no-accelerometer merged into main, tag hw/Cricket_008/A pushed (fab pack appears on the release) - cricket_firmware_008 built and flashed over SerialUPDI; --actuator-test passes (12 patterns + 3 tones), then the production image - Standby current measured and written in the plan note

Verify: - url-contains: https://github.com/EmbeddedEra/Cricket/releases "Cricket_008" - notes-contains: projects/cricket-product.md "standby current" [kanboard] - [ ] #231 adiaz@embeddedera.com / Engineering: Cricket 008: snap-fit enclosure v2 with the vibration motor (phases 1–5) (due 2026-10-16 OVERDUE) — Concept: the current shell predates the vibration motor and does not snap together. Build v2 in phases (plan: https://notebook.embeddedera.com/projects/cricket-product/, section 'Enclosure v2'): 1 model + place the coin motor on the board; 2 envelope measurements; 3 parametric FreeCAD generator for a snap-fit base + lid with USB exit, piezo grille, LED hole, motor pocket, cell bay; 4 print and fit (Angel); 5 twenty shells.

Deliverables: - Motor STEP in the library and placed on Cricket 008 (portal shows it) - mechanical/cricket-008/enclosure.py generator + FCStd + STL + 3MF committed - Portal 'Board in enclosure' viewer shows v2 with the board inside - One printed and fitted by Angel; parameters adjusted; 20 printed

Verify: - url-contains: https://github.com/EmbeddedEra/Cricket "enclosure.py" - Check by hand: a photo of the snapped shell on a real board in the plan note [kanboard] - [ ] #263 adiaz@embeddedera.com / Engineering: Intake: create a part number from a DigiKey / Mouser / LCSC link (due 2026-10-08 OVERDUE) — Concept: a 'Create part number' kind in intake — paste a distributor link (plus optional datasheet link and photo), get a proposed part that follows SOP-001 and SOP-002, press a button, the part is created with its manufacturer part, supplier part and image. Plan: https://notebook.embeddedera.com/projects/part-intake/

Most of it exists already (part-lookup, partnorm, build_part_proposal_async, _create_part_and_stock, the intake photo field) — the new work is the URL→MPN parser, the dropdown kind, and a confirm screen without the stock fields.

Deliverables: - Kind in the intake dropdown and its form (links + photo) - MPN read from DigiKey and Mouser URLs; LCSC asks for the MPN until its lookup is written - Confirm screen with every field editable; nothing created until submitted - Existing-part match offered before creating a duplicate - SOP-002 gains the new route as the normal way to create a component

Verify: - Check by hand: a DigiKey link becomes a part with IPN, description, manufacturer part, supplier part and image - notes-contains: projects/part-intake.md "Status: built" [kanboard] - [ ] #266 adiaz@embeddedera.com / Engineering: Validate the store social-login integration and free-first cost decision (due 2026-10-19 OVERDUE) — Compare maintained existing WordPress integrations against Google, Apple and Facebook requirements. Nextend Free is the current Google/Facebook candidate; supported shortcode placement needs native Woo testing. Apple and automatic Woo integration are paid in Nextend. Evaluate maintained free alternatives before recommending payment; no custom OAuth backend or purchase by default.

Plan: https://notebook.embeddedera.com/projects/store-social-login/ Depends on: none Owner: Angel, default department triage owner; Engineering implementation may be delegated when started. Planning only today. Default review date 2026-10-19 (SOP-017), not a launch promise.

Deliverables: - Compatibility and security decision record - free-versus-paid comparison including Apple membership and maintenance - exact development/production callback and network design

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Record identifies chosen maintained integration and licenses - Evidence covers existing-account linking and Woo cart preservation - Any paid requirement has an explicit owner decision [kanboard] - [ ] #268 adiaz@embeddedera.com / Engineering: Connect and test Google customer login in the isolated Woo store (due 2026-10-19 OVERDUE) — Implement selected maintained integration in /home/angel/embeddedera-store sandbox. Permit only documented identity exchange traffic through a tested narrow path. Preserve Cloudflare staff gate and all payment/mail/ERP isolation. Add working buttons to My Account and supported checkout login UI only after successful connection.

Plan: https://notebook.embeddedera.com/projects/store-social-login/ Depends on: #266, #267 Owner: Angel, default department triage owner; Engineering implementation may be delegated when started. Planning only today. Default review date 2026-10-19 (SOP-017), not a launch promise.

Deliverables: - Reviewed source/configuration and Google acceptance evidence - narrow network validation - rollback instructions

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - New and existing customer sign-in succeeds with authorized test accounts - Guest checkout and cart contents survive redirect - Staff and B2B privileges cannot be gained through customer login [kanboard] - [ ] #269 adiaz@embeddedera.com / Engineering: Connect and test Facebook customer login in the isolated Woo store (due 2026-10-19 OVERDUE) — Use selected integration and owner-managed Meta app. Request minimal identity permissions, handle denied permissions and absent email explicitly, and distinguish developer test mode from public availability. Do not activate public buttons before applicable app requirements are satisfied.

Plan: https://notebook.embeddedera.com/projects/store-social-login/ Depends on: #266, #267 Owner: Angel, default department triage owner; Engineering implementation may be delegated when started. Planning only today. Default review date 2026-10-19 (SOP-017), not a launch promise.

Deliverables: - Reviewed Facebook configuration and mobile/desktop acceptance evidence - provider readiness record

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - First and repeat sign-in work with authorized accounts - Missing email and denied consent have safe recovery - App public-readiness requirements and account-linking checks pass [kanboard] - [ ] #270 adiaz@embeddedera.com / Engineering: Connect and test Apple customer login after readiness and cost decision (due 2026-10-19 OVERDUE) — Use selected maintained Apple integration only after owner cost decision and developer prerequisites. Handle Hide My Email and one-time name return; define signing-secret rotation, revocation and account recovery. Validate the callback method through the gated development environment without weakening the whole site gate.

Plan: https://notebook.embeddedera.com/projects/store-social-login/ Depends on: #266, #267 Owner: Angel, default department triage owner; Engineering implementation may be delegated when started. Planning only today. Default review date 2026-10-19 (SOP-017), not a launch promise.

Deliverables: - Reviewed Apple configuration - Safari/iPhone and relay-identity acceptance evidence - key rotation and expiry procedure

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - First and repeat Apple sign-in succeed without duplicate accounts - Relay email is handled without exposing identity or inventing email verification - Callback, key expiry and revocation recovery are verified [kanboard] - [ ] #271 adiaz@embeddedera.com / Engineering: Verify and release customer social login with recovery and operating SOP (due 2026-10-19 OVERDUE) — Independently verify each provider before a staged release. Keep unavailable providers hidden, native password and guest checkout available, and marketing coming-soon page until separate store launch. Write one repeatable operating SOP covering setup, rotation, troubleshooting, unlinking, deletion and rollback; cross-reference SOP-020 and SOP-030. Release only providers with passed evidence; do not mark all-three scope complete while any is deferred.

Plan: https://notebook.embeddedera.com/projects/store-social-login/ Depends on: #268, #269, #270 Owner: Angel, default department triage owner; Engineering implementation may be delegated when started. Planning only today. Default review date 2026-10-19 (SOP-017), not a launch promise.

Deliverables: - Security and checkout test matrix - operating SOP and rollback rehearsal - provider-by-provider release record

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - State/nonce and replay protections, exact redirects and safe account linking are verified - Order ownership, staff separation and B2B approval remain enforced - Unlink/recovery, provider outage, mobile access and no duplicate ERP customer/order regression pass - Provider disable/rollback preserves accounts, orders and native login [kanboard] - [ ] #272 adiaz@embeddedera.com / Engineering: Accept and reconcile store card payments through Stripe (due 2026-10-19 OVERDUE) — Depends on existing #23 payment-account setup. Use installed official Woo Stripe gateway; validate sandbox first, then approved live connection. Preserve test and live credentials separately; no raw card storage. Test successful/declined/3DS payments, signed duplicate/out-of-order webhooks, refunds, disputes, fees, payouts and ERP reporting. Never release fulfillment on an unconfirmed payment.

Plan: https://notebook.embeddedera.com/projects/store-launch/ Angel is department default triage owner; implementation is not started. Default review date 2026-10-19 is not a launch promise.

Deliverables: - Gateway configuration and test evidence - reconciliation and failure-recovery SOP - approved live activation record

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Each named deliverable is linked in the Done record with independently reproducible evidence. - Applicable failure, recovery and customer-data access cases pass in the isolated test environment. - Any production enablement has its acceptance record; unfinished dependencies remain explicitly open. [kanboard] - [ ] #274 adiaz@embeddedera.com / Engineering: Reserve ERP stock and synchronize every released store SKU (due 2026-10-19 OVERDUE) — Before real sales, validate SKU identity and unit mappings for all listings, available-to-promise stock, atomic reservation, concurrent checkout, release on cancellation/expiry, refunds/restock and retry reconciliation. Ten added test catalog items are not mapped in the order worker yet; mixed carts must not silently create partial ERP orders. ERP remains inventory authority.

Plan: https://notebook.embeddedera.com/projects/store-launch/ Angel is department default triage owner; implementation is not started. Default review date 2026-10-19 is not a launch promise.

Deliverables: - Catalog mapping register - concurrency and retry evidence - production promotion and rollback record

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Each named deliverable is linked in the Done record with independently reproducible evidence. - Applicable failure, recovery and customer-data access cases pass in the isolated test environment. - Any production enablement has its acceptance record; unfinished dependencies remain explicitly open. [kanboard] - [ ] #275 adiaz@embeddedera.com / Engineering: Quote eligible shipping and verify label-to-pack fulfillment (due 2026-10-19 OVERDUE) — Depends on existing #25 shipping accounts/packaging. Configure measured parcels, rates, destinations, split shipments and customs; standalone battery requires its own transport documents and allowed services. Verify paid-and-allocated gate, one label per request, printer retry, tracking updates and exception handling; no automatic re-buy on ambiguous timeout.

Plan: https://notebook.embeddedera.com/projects/store-launch/ Angel is department default triage owner; implementation is not started. Default review date 2026-10-19 is not a launch promise.

Deliverables: - Eligible shipping/rate matrix - test label and printer evidence - shipment tracking and exception SOP

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Each named deliverable is linked in the Done record with independently reproducible evidence. - Applicable failure, recovery and customer-data access cases pass in the isolated test environment. - Any production enablement has its acceptance record; unfinished dependencies remain explicitly open. [kanboard] - [ ] #277 adiaz@embeddedera.com / Engineering: Finish catalog presentation and customer checkout acceptance (due 2026-10-19 OVERDUE) — Apply Waveshare/Adafruit-inspired stable navigation and help/learning access. Finish actual images/specifications, approved retail prices and quantity breaks, search/filter/category organization, persistent Products menu, breadcrumbs and pagination (recently viewed removed at owner request). Test mobile/accessibility, cart changes, guest/account checkout and My orders. Benchmark representative thousand-item catalog separately. Social login tracks #266–271; define any accepted staged deferral.

Plan: https://notebook.embeddedera.com/projects/store-launch/ Angel is department default triage owner; implementation is not started. Default review date 2026-10-19 is not a launch promise.

Deliverables: - Listing release checklist - link/mobile/accessibility report - catalog load and customer journey evidence

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Each named deliverable is linked in the Done record with independently reproducible evidence. - Applicable failure, recovery and customer-data access cases pass in the isolated test environment. - Any production enablement has its acceptance record; unfinished dependencies remain explicitly open. [kanboard] - [ ] #278 adiaz@embeddedera.com / Engineering: Verify store email delivery and abandoned-cart reminders (due 2026-10-19 OVERDUE) — Prepare production transactional email with authenticated sender, order/receipt/shipping templates and delivery monitoring. Validate opt-in where required, unsubscribe, completed-purchase and unavailable-stock suppression for recovery reminders. Keep sandbox external email blocked and use captured messages for tests.

Plan: https://notebook.embeddedera.com/projects/store-launch/ Angel is department default triage owner; implementation is not started. Default review date 2026-10-19 is not a launch promise.

Deliverables: - Email authentication and delivery evidence - reminder suppression/consent tests - support and notification SOP

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Each named deliverable is linked in the Done record with independently reproducible evidence. - Applicable failure, recovery and customer-data access cases pass in the isolated test environment. - Any production enablement has its acceptance record; unfinished dependencies remain explicitly open. [kanboard] - [ ] #279 adiaz@embeddedera.com / Engineering: Approve store launch after backup, security and order rehearsal (due 2026-10-19 OVERDUE) — Depends on all store-launch gates in linked plan. Prove database/media recovery, monitoring, secret handling, updates and rollback. Rehearse order-to-ERP-to-shipment/refund with approved credentials; review B2B access and payment isolation. Replace marketing coming-soon link only when actual launch accepted; keep unfinished features explicit.

Plan: https://notebook.embeddedera.com/projects/store-launch/ Angel is department default triage owner; implementation is not started. Default review date 2026-10-19 is not a launch promise.

Deliverables: - Restore and security evidence - signed-off launch checklist and staged activation record - support/rollback ownership

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Each named deliverable is linked in the Done record with independently reproducible evidence. - Applicable failure, recovery and customer-data access cases pass in the isolated test environment. - Any production enablement has its acceptance record; unfinished dependencies remain explicitly open. [kanboard] - [ ] #280 adiaz@embeddedera.com / Engineering: Publish useful product documentation and decide community support scope (due 2026-10-19 OVERDUE) — Build on Engineering Notes and native product pages. Establish SKU-linked datasheets/manuals, FAQs and support ownership before choosing a wiki or forum. Compare existing free tools only after content needs are known. A public forum requires moderation, spam control, privacy and response ownership; do not launch an empty forum or link a nonexistent wiki. Related store UX task277.

Deliverables: - Product documentation inventory and prioritized content plan. - Written wiki/forum versus existing-notes decision and support owner. - Working published links for approved resources.

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Technical content maps to correct SKUs and records unknown specifications. - Any community launch has moderation and response ownership. - Store links reach real approved content on mobile and desktop. [kanboard] - [ ] #285 adiaz@embeddedera.com / Engineering: Robot Cow 3/7 — qualify the 10 µF reel in YY1 slot 27 (due 2026-09-27 OVERDUE) — EE-C-0185 is the required C15 part, but its manufacturer and exact MPN are still unknown and purchasing is disabled. Read the physical reel label rather than guessing from the schematic value.

What to do: 1. Photograph the full label on the reel currently in YY1 slot 27. 2. Record manufacturer, exact MPN, capacitance, voltage, dielectric, tolerance and package. 3. Confirm those characteristics satisfy C15: 10 µF, 50 V, X7R, 0603. Stop and report a mismatch instead of qualifying it. 4. Add the manufacturer part to EE-C-0185 in the ERP and attach or link the label evidence.

Deliverables: - Exact manufacturer and MPN recorded on EE-C-0185 - Reel-label photo - Qualification result against the C15 specification

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - ERP part EE-C-0185 has at least one manufacturer part with an exact MPN - The Done comment states 10 µF, 50 V, X7R, 0603 and the observed tolerance - attachments>=1 [assistant:Robot Cow BO-0001 finishing checklist 2026-09-20] - [ ] #293 adiaz@embeddedera.com / Engineering: Run and verify autonomous daily note, feeds and linked Stories with seven-day reserve (due 2026-10-11 OVERDUE) — Implement the authorized hands-off daily EmbeddedEra chain: one new website note, Facebook/Instagram feeds and native linked Stories, using one calendar and seven complete future daily packages. Owner explicitly authorized implementation and multiple bounded agents on 2026-09-23; assistant holds routine review authority. Execution owner is Codex with constrained Fable workers; Android project retains adapter ownership. Plan: https://notebook.embeddedera.com/projects/content-autonomy-implementation/ . Existing scheduled jobs preserved.

Deliverables: - Durable parent package/review/attempt ledger and seven-consecutive-date coverage - Automated preparation/review, daily executor, reconciliation and monitoring integrated with existing components - Controlled Android Share and exact viewer-link evidence - Operational SOP and truthful enabled/blocked status

Verify: - Isolated concurrency/crash/timeout/edit/date fault tests pass - No duplicate submissions after uncertain acceptance or process restart - Seven complete future packages are ready, distinct from drafts and published history - Seven consecutive controlled successful Story days per platform with exact-link evidence - Daily operation needs no chat or routine owner approvals [kanboard] - [ ] #299 Engineering: Fix job engineering-deploy — Job: engineering-deploy (cron, area engineering)

What it is: Hourly builds the portal in a temp dir and uploads it to engineering.embeddedera.com (Cloudflare Pages, gated) only if content hash changed; a failed run leaves the previous site.

Schedule: Every hour at :20 (20 * * * *)

Last 3 runs: - 2026-10-06T17:20:01-04:00: ok in 513s - 2026-10-06T18:20:01-04:00: ok in 542s - 2026-10-06T19:20:01-04:00: failed rc=1 in 19s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

 + 3072045...dc83884 main       -> origin/main  (forced update)
 * [new tag]         4.0.6      -> 4.0.6
 * [new tag]         4.0.7      -> 4.0.7
 * [new tag]         4.0.8      -> 4.0.8
 * [new tag]         4.2.0      -> 4.2.0
 * [new tag]         4.2.1      -> 4.2.1
 * [new tag]         4.3.0      -> 4.3.0
 * [new tag]         4.3.1      -> 4.3.1
hint: Diverging branches can't be fast-forwarded, you need to either:
hint: 
hint:   git merge --no-ff
hint: 
hint: or:
hint: 
hint:   git rebase
hint: 
hint: Disable this message with "git config advice.diverging false"
fatal: Not possible to fast-forward, aborting.
engineering-deploy: engineering-build failed; nothing deployed
=== 2026-10-06T19:20:20-04:00 end rc=1 in 19s ===

Claude: diagnose and fix; see job detail #job/engineering-deploy [kanboard] - [ ] #207 yrosado@embeddedera.com / Facilities: Hot and cold labels created and installed on equipment (due 2026-10-14 OVERDUE) — Create physical labels or marking that clearly indicate which parts or zones of equipment are hot and which are cold. This is a safety and operational clarity issue — staff and visitors need to know at a glance where temperature hazards exist and where cooling zones are, to avoid burns, frostbite, or process errors.

Raised from the intake page by adiaz@embeddedera.com on 2026-09-14.

Deliverables: - Label design file or image (hot/cold specification) - Physical labels installed on equipment - Installation photo or record

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Labels are visible and legible from normal working distance - Both hot and cold zones are marked - Labels are affixed securely to equipment

Open questions: - Which equipment or area needs the labels? - Are we using one combined label or two separate labels? - Do the labels need to meet any safety standard or color scheme (e.g., red for hot, blue for cold)? [intake] - [ ] #208 adiaz@embeddedera.com / Facilities: Fan underlight installed and tested in dining table (due 2026-10-14 OVERDUE) — The dining table requires a fan underlight component to be physically installed and verified as functional. This is a straightforward assembly task that adds ambient lighting capability to the table unit. Once complete, the table will have full lighting functionality as designed.

Raised from the intake page by yrosado@embeddedera.com on 2026-09-14.

Deliverables: - Fan underlight physically mounted to dining table - Installation record with photos or notes - Functional test confirmation

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Visual inspection confirms underlight is securely attached to the underside of the dining table - Done comment includes before/after photos or detailed installation notes showing the component in place - Done comment includes test result: underlight powers on and illuminates as expected

Open questions: - Which specific dining table unit—do you have a part number, model name, or location reference? - Does the fan underlight come pre-wired, or does it need to be connected to an existing power supply or control system? - Are there any special tools or fasteners needed, or is this a simple bolt-on installation? [intake] - [ ] #209 yrosado@embeddedera.com / Facilities: Cost comparison: two weekly trash cans vs one trash + one biweekly recycling (due 2026-09-21 OVERDUE) — The shop currently pays for one weekly trash pickup and one biweekly recycling pickup. We need to compare the total annual cost of this setup against switching to two weekly trash pickups (no separate recycling). This matters because higher recycling frequency might cost less than managing two separate waste streams, or consolidating to trash-only might be cheaper overall.

Raised from the intake page by adiaz@embeddedera.com on 2026-09-14.

Deliverables: - Cost comparison spreadsheet or document - Current vendor quote or invoice - Alternative vendor quote for two weekly trash

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A human can see the side-by-side annual cost calculation with line items - Document shows current pricing for 1 weekly trash + 1 biweekly recycling - Document shows pricing for 2 weekly trash cans from at least one vendor

Open questions: - What is the current waste vendor and contract term—can we get competing quotes, or are we locked in? - Does the two-trash option mean we stop recycling entirely, or is recycling included in weekly pickup? - What is the volume/capacity difference—do two trash cans actually fit the shop's weekly waste output? [intake] - [ ] #304 Facilities: Fix job ai-capacity-refresh — Job: ai-capacity-refresh (user-timer, area systems)

What it is: Every 5 minutes reads the Codex allowance (read-only, no inference).

Schedule: 2min after boot (OnBootUSec=2min)

Last 3 runs: - 2026-10-08T10:52:07-04:00: ok in 2s - 2026-10-08T10:57:08-04:00: ok in 2s - 2026-10-08T11:02:08-04:00: failed rc=1 in 18s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

ai-capacity refresh: ok
Finished ai-capacity-refresh.service - ai-capacity: refresh the Codex rate-limit snapshot (read-only, no inference).
Starting ai-capacity-refresh.service - ai-capacity: refresh the Codex rate-limit snapshot (read-only, no inference)...
ai-capacity refresh: ok
Finished ai-capacity-refresh.service - ai-capacity: refresh the Codex rate-limit snapshot (read-only, no inference).
Starting ai-capacity-refresh.service - ai-capacity: refresh the Codex rate-limit snapshot (read-only, no inference)...
ai-capacity refresh: ok
Finished ai-capacity-refresh.service - ai-capacity: refresh the Codex rate-limit snapshot (read-only, no inference).
Starting ai-capacity-refresh.service - ai-capacity: refresh the Codex rate-limit snapshot (read-only, no inference)...
ai-capacity refresh: ok
Finished ai-capacity-refresh.service - ai-capacity: refresh the Codex rate-limit snapshot (read-only, no inference).
Starting ai-capacity-refresh.service - ai-capacity: refresh the Codex rate-limit snapshot (read-only, no inference)...
ai-capacity refresh: ok
Finished ai-capacity-refresh.service - ai-capacity: refresh the Codex rate-limit snapshot (read-only, no inference).
Starting ai-capacity-refresh.service - ai-capacity: refresh the Codex rate-limit snapshot (read-only, no inference)...
ai-capacity refresh: failed — timeout
ai-capacity-refresh.service: Main process exited, code=exited, status=1/FAILURE
ai-capacity-refresh.service: Failed with result 'exit-code'.
Failed to start ai-capacity-refresh.service - ai-capacity: refresh the Codex rate-limit snapshot (read-only, no inference).
ai-capacity-refresh.service: Triggering OnFailure= dependencies.

Claude: diagnose and fix; see job detail #job/ai-capacity-refresh [kanboard] - [ ] #310 Facilities: Fix job postiz-scheduler-watchdog — Job: postiz-scheduler-watchdog (user-timer, area systems)

What it is: Every 5 minutes checks the Postiz scheduler worker and restarts only its orchestrator if stalled.

Schedule: -- :00/5:00 (-- :00/5:00)

Last 3 runs: - 2026-10-11T13:10:02-04:00: ok in 1s - 2026-10-11T13:15:02-04:00: ok in 1s - 2026-10-11T13:20:05-04:00: failed rc=1 in 15s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

    result = run(["docker", "inspect", "--format", "{{.State.Running}}|{{.State.StartedAt}}", CONTAINER])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/angel/.local/bin/postiz-scheduler-watchdog", line 36, in command
    return subprocess.run(args, stdin=subprocess.DEVNULL, stdout=subprocess.PIPE,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/subprocess.py", line 550, in run
    stdout, stderr = process.communicate(input, timeout=timeout)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/subprocess.py", line 1209, in communicate
    stdout, stderr = self._communicate(input, endtime, timeout)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/subprocess.py", line 2116, in _communicate
    self._check_timeout(endtime, orig_timeout, stdout, stderr)
  File "/usr/lib/python3.12/subprocess.py", line 1253, in _check_timeout
    raise TimeoutExpired(
subprocess.TimeoutExpired: Command '['docker', 'inspect', '--format', '{{.State.Running}}|{{.State.StartedAt}}', 'postiz']' timed out after 15 seconds
postiz-scheduler-watchdog.service: Main process exited, code=exited, status=1/FAILURE
postiz-scheduler-watchdog.service: Failed with result 'exit-code'.
Failed to start postiz-scheduler-watchdog.service - Repair a stalled Postiz scheduling worker.
postiz-scheduler-watchdog.service: Triggering OnFailure= dependencies.

Claude: diagnose and fix; see job detail #job/postiz-scheduler-watchdog [kanboard] - [ ] #312 Facilities: Fix job codex-remote-control — Job: codex-remote-control (user-timer, area systems)

What it is: Starts Codex remote control at boot and recovers it if stopped.

Schedule: 20s after boot (OnBootUSec=20s)

Last 3 runs: - 2026-10-11T17:11:34-04:00: failed rc=1 in 0s - 2026-10-11T17:12:35-04:00: failed rc=1 in 0s - 2026-10-11T17:13:39-04:00: failed rc=1 in 0s

What went wrong: Error: app server is running but is not managed by codex app-server daemon codex-remote-control.service: Main process exited, code=exited, status=1/FAILURE codex-remote-control.service: Failed with result 'exit-code'. Failed to start codex-remote-control.service - Ensure Codex remote control is running. codex-remote-control.service: Triggering OnFailure= dependencies. Exited with code 1.

Log tail (secrets masked):

codex-remote-control.service: Failed with result 'exit-code'.
Failed to start codex-remote-control.service - Ensure Codex remote control is running.
codex-remote-control.service: Triggering OnFailure= dependencies.
Starting codex-remote-control.service - Ensure Codex remote control is running...
Error: app server is running but is not managed by codex app-server daemon
codex-remote-control.service: Main process exited, code=exited, status=1/FAILURE
codex-remote-control.service: Failed with result 'exit-code'.
Failed to start codex-remote-control.service - Ensure Codex remote control is running.
codex-remote-control.service: Triggering OnFailure= dependencies.
Starting codex-remote-control.service - Ensure Codex remote control is running...
codex-remote-control.service: Main process exited, code=exited, status=1/FAILURE
codex-remote-control.service: Failed with result 'exit-code'.
Failed to start codex-remote-control.service - Ensure Codex remote control is running.
codex-remote-control.service: Triggering OnFailure= dependencies.
Starting codex-remote-control.service - Ensure Codex remote control is running...
Error: app server is running but is not managed by codex app-server daemon
codex-remote-control.service: Main process exited, code=exited, status=1/FAILURE
codex-remote-control.service: Failed with result 'exit-code'.
Failed to start codex-remote-control.service - Ensure Codex remote control is running.
codex-remote-control.service: Triggering OnFailure= dependencies.

Claude: diagnose and fix; see job detail #job/codex-remote-control [kanboard] - [ ] #316 Facilities: Fix job job-fixer — Job: job-fixer (cron, area systems)

What it is: AI job fixer, week 1 (PR only, owner approves). Kill switch: ~/.config/job-fixer.disabled. See map/processes/job-fixer.md

Schedule: Every 30 minutes (/30 * * * )

Last 3 runs: - 2026-10-14T08:30:02-04:00: ok in 1s - 2026-10-14T09:00:02-04:00: ok in 2s - 2026-10-14T09:30:01-04:00: failed rc=1 in 153s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

no unhandled escalated incident
=== 2026-10-14T09:00:04-04:00 end rc=0 in 2s ===
=== 2026-10-14T09:30:01-04:00 start: /usr/bin/timeout 30m /home/angel/.local/bin/job-fixer ===
incident story-publish-due-1791983820 job=story-publish-due attempt 1/3
scope: code change in EmbeddedEra/ops-scripts (clone, tests, maker sonnet, escalate opus once, checker, PR)
story-publish-due: own-repo pass ended 'nodiff', trying dependency repo EmbeddedEra/story-publisher
Traceback (most recent call last):
  File "/home/angel/.local/bin/job-fixer", line 379, in <module>
    sys.exit(run("--dry-run" in sys.argv))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/angel/.local/bin/job-fixer", line 364, in run
    attempt(inc, job, sc, state)
  File "/home/angel/.local/bin/job-fixer", line 320, in attempt
    s2, t2 = fix_pass(task, job, ctx, state, date, dep, dslug, dkind, dbrief, "-dep")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/angel/.local/bin/job-fixer", line 248, in fix_pass
    cause = (inc.get("cause") or "see receipts")[:100]
             ^^^
NameError: name 'inc' is not defined. Did you mean: 'int'?
=== 2026-10-14T09:32:34-04:00 end rc=1 in 153s ===

Claude: diagnose and fix; see job detail #job/job-fixer [kanboard] - [ ] #322 Facilities: Fix job codex-update — Job: codex-update (user-timer, area systems)

What it is: Updates the Codex CLI daily at 04:00.

Schedule: Every day at 04:00 (--* 04:00:00)

Last 3 runs: - 2026-10-16T04:01:51-04:00: ok in 1s - 2026-10-17T04:10:56-04:00: ok in 1s - 2026-10-18T04:07:42-04:00: failed rc=1 in 17s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

==> Future terminals: open a new terminal and run: codex
Codex CLI 0.163.0 installed successfully.
🎉 Update ran successfully! Please restart Codex.
{"mode":"daemon","status":"connected","serverName":"Plex","environmentId":"env_e_6aaabbe7d1e8832bbe5f6a1132afabc3","timedOut":false,"daemon":{"status":"alreadyRunning","backend":"pid","managedCodexPath":"/home/angel/.codex/packages/standalone/current/bin/codex","managedCodexVersion":"0.163.0","socketPath":"/home/angel/.codex/app-server-control/app-server-control.sock","cliVersion":"0.163.0","appServerVersion":"0.163.0"}}
Finished codex-update.service - Update Codex and reconnect remote control.
Starting codex-update.service - Update Codex and reconnect remote control...
Updating Codex via `sh -c 'curl -fsSL https://chatgpt.com/codex/install.sh | CODEX_NON_INTERACTIVE=1 sh'`...
==> Updating Codex CLI
==> Detected platform: Linux (x64)
==> Resolved version: 0.163.0
==> /home/angel/.local/bin is already on PATH
==> Current terminal: codex
==> Future terminals: open a new terminal and run: codex
Codex CLI 0.163.0 installed successfully.
🎉 Update ran successfully! Please restart Codex.
Error: Remote control is enabled on Plex but the connection is errored.
codex-update.service: Main process exited, code=exited, status=1/FAILURE
codex-update.service: Failed with result 'exit-code'.
Failed to start codex-update.service - Update Codex and reconnect remote control.
codex-update.service: Triggering OnFailure= dependencies.

Claude: diagnose and fix; see job detail #job/codex-update [kanboard] - [ ] #327 Facilities: Fix job precious-sync — Job: precious-sync (cron, area systems)

What it is: Nightly copy (never deletes) of immich and EmbeddedEra to the root NVMe with a sampled verify; after the Immich 02:00 dump.

Schedule: Every day at 02:20 (20 2 * * *)

Last 3 runs: - 2026-10-19T02:20:01-04:00: ok in 95s - 2026-10-20T02:20:02-04:00: ok in 57s - 2026-10-21T02:20:01-04:00: failed rc=1 in 6154s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

2026-10-20 02:20:28  --- rsync immich (excluding thumbs/, encoded-video/) ---
2026-10-20 02:20:34  --- rsync out-of-library originals ---
2026-10-20 02:20:34  --- rsync EmbeddedEra ---
2026-10-20 02:20:53  source files: 38760   missing from copy: 0
2026-10-20 02:20:53  --- sampled sha256 verification (50 files) ---
2026-10-20 02:20:57  hash mismatches: 0
2026-10-20 02:20:57  newest DB dump: immich-db-backup-20261020T020000-v2.4.1-pg14.19.sql.gz (0h old)
2026-10-20 02:20:59  === precious-sync complete: ok 38760 files 121G verify=sample warn=0 ===
=== 2026-10-20T02:20:59-04:00 end rc=0 in 57s ===
=== 2026-10-21T02:20:01-04:00 start: /usr/local/bin/precious-sync.sh ===
2026-10-21 02:20:01  === precious-sync starting (copy=1 verify=sample) ===
2026-10-21 02:20:01  source disks: /dev/sda1 ...  destination: /dev/nvme0n1p2
2026-10-21 02:33:59  space ok: 40231860K free, 127192804K of source
2026-10-21 02:33:59  originals outside library/: 13 (copied explicitly)
2026-10-21 02:33:59  --- rsync immich (excluding thumbs/, encoded-video/) ---
2026-10-21 03:03:35  --- rsync out-of-library originals ---
2026-10-21 03:03:35  --- rsync EmbeddedEra ---
2026-10-21 04:02:35  source files: 40160   missing from copy: 18
2026-10-21 04:02:35  ERROR: 18 source files are absent from the copy
=== 2026-10-21T04:02:35-04:00 end rc=1 in 6154s ===

Claude: diagnose and fix; see job detail #job/precious-sync [kanboard] - [ ] #328 Facilities: Fix job assistant-heartbeat — Job: assistant-heartbeat (user-timer, area systems)

What it is: Checks the assistant service is alive.

Schedule: 1min after boot (OnBootUSec=1min)

Last 3 runs: - 2026-10-21T12:14:38-04:00: ok in 0s - 2026-10-21T12:15:38-04:00: ok in 0s - 2026-10-21T12:18:31-04:00: failed rc=56 in 3s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

Finished assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma.
Starting assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma...
Finished assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma.
Starting assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma...
Finished assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma.
Starting assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma...
Finished assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma.
Starting assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma...
Finished assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma.
Starting assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma...
Finished assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma.
Starting assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma...
Finished assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma.
Starting assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma...
Finished assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma.
Starting assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma...
assistant-heartbeat.service: Main process exited, code=exited, status=56/n/a
assistant-heartbeat.service: Failed with result 'exit-code'.
Failed to start assistant-heartbeat.service - Push an assistant heartbeat to Uptime Kuma.
assistant-heartbeat.service: Triggering OnFailure= dependencies.

Claude: diagnose and fix; see job detail #job/assistant-heartbeat [kanboard] - [ ] #332 Facilities: Fix job note-release-preflight — Job: note-release-preflight (cron, area systems)

What it is: rescue-kit installed copy must match ~/rescue-kit (sudo install) — see map card storage/rescue-usb Build the production site with every queued note added; pages

Schedule: Every day at 05:20 (20 5 * * *)

Last 3 runs: - 2026-10-22T05:20:01-04:00: ok in 47s - 2026-10-23T05:20:02-04:00: ok in 44s - 2026-10-24T05:20:01-04:00: failed rc=1 in 48s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

PASS: every queued note builds
=== 2026-10-22T05:20:48-04:00 end rc=0 in 47s ===
=== 2026-10-23T05:20:02-04:00 start: /home/angel/.local/bin/note-release-preflight ===
queued 2026-10-23 ***
queued 2026-10-24 ***
queued 2026-10-25 ***
check-seo: PASS — 118 indexable page(s) checked.
check-geo: PASS — 118 indexable page(s), 18 tools and 38 notes in llms.txt, 57 page(s) with FAQPage.
PASS: every queued note builds
=== 2026-10-23T05:20:46-04:00 end rc=0 in 44s ===
=== 2026-10-24T05:20:01-04:00 start: /home/angel/.local/bin/note-release-preflight ===
queued 2026-10-24 ***
queued 2026-10-25 ***
queued 2026-10-26 ***
queued 2026-10-27 ***
FAIL: a queued note will not build
check-seo: FAIL — 1 page(s) failed the traffic checklist:
  ***
    - internal link target not built: "***"
=== 2026-10-24T05:20:49-04:00 end rc=1 in 48s ===

Claude: diagnose and fix; see job detail #job/note-release-preflight [kanboard] - [ ] #334 Facilities: Fix job booking-warm — Job: booking-warm (cron, area systems)

What it is: booking-warm: GET /api/book/slots (next 14 days) so the website's D1 busy-time cache stays under 5 min old (embeddedera-site PR #9); non-200 pages. Points at

Schedule: Every 5 minutes (/5 * * * )

Last 3 runs: - 2026-10-25T08:00:01-04:00: ok in 2s - 2026-10-25T08:05:07-04:00: ok in 8s - 2026-10-25T08:10:01-04:00: failed rc=23 in 9s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

=== 2026-10-25T07:25:01-04:00 start: /home/angel/.local/bin/booking-warm https://embeddedera.com ===
=== 2026-10-25T07:25:02-04:00 end rc=0 in 1s ===
=== 2026-10-25T07:30:01-04:00 start: /home/angel/.local/bin/booking-warm https://embeddedera.com ===
=== 2026-10-25T07:30:03-04:00 end rc=0 in 2s ===
=== 2026-10-25T07:35:01-04:00 start: /home/angel/.local/bin/booking-warm https://embeddedera.com ===
=== 2026-10-25T07:35:02-04:00 end rc=0 in 1s ===
=== 2026-10-25T07:40:01-04:00 start: /home/angel/.local/bin/booking-warm https://embeddedera.com ===
=== 2026-10-25T07:40:02-04:00 end rc=0 in 1s ===
=== 2026-10-25T07:45:01-04:00 start: /home/angel/.local/bin/booking-warm https://embeddedera.com ===
=== 2026-10-25T07:45:02-04:00 end rc=0 in 1s ===
=== 2026-10-25T07:50:01-04:00 start: /home/angel/.local/bin/booking-warm https://embeddedera.com ===
=== 2026-10-25T07:50:02-04:00 end rc=0 in 1s ===
=== 2026-10-25T07:55:01-04:00 start: /home/angel/.local/bin/booking-warm https://embeddedera.com ===
=== 2026-10-25T07:55:02-04:00 end rc=0 in 1s ===
=== 2026-10-25T08:00:01-04:00 start: /home/angel/.local/bin/booking-warm https://embeddedera.com ===
=== 2026-10-25T08:00:03-04:00 end rc=0 in 2s ===
=== 2026-10-25T08:05:07-04:00 start: /home/angel/.local/bin/booking-warm https://embeddedera.com ===
=== 2026-10-25T08:05:09-04:00 end rc=0 in 8s ===
=== 2026-10-25T08:10:01-04:00 start: /home/angel/.local/bin/booking-warm https://embeddedera.com ===
=== 2026-10-25T08:10:10-04:00 end rc=23 in 9s ===

Claude: diagnose and fix; see job detail #job/booking-warm [kanboard] - [ ] #338 Facilities: Fix job notebook-publish — Job: notebook-publish (user-timer, area systems)

What it is: Publishes the notebook site from the vault after changes.

Schedule: 5min after boot (OnBootUSec=5min)

Last 3 runs: - 2026-10-26T10:40:40-04:00: ok in 43s - 2026-10-26T10:50:40-04:00: ok in 30s - 2026-10-26T11:00:41-04:00: failed rc=1 in 1s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

Starting notebook-publish.service - Republish the notebook when the vault has changed...
Finished notebook-publish.service - Republish the notebook when the vault has changed.
notebook-publish.service: Consumed 21.091s CPU time.
Starting notebook-publish.service - Republish the notebook when the vault has changed...
Finished notebook-publish.service - Republish the notebook when the vault has changed.
notebook-publish.service: Consumed 24.320s CPU time.
Starting notebook-publish.service - Republish the notebook when the vault has changed...
Finished notebook-publish.service - Republish the notebook when the vault has changed.
notebook-publish.service: Consumed 23.756s CPU time.
Starting notebook-publish.service - Republish the notebook when the vault has changed...
Finished notebook-publish.service - Republish the notebook when the vault has changed.
notebook-publish.service: Consumed 19.875s CPU time.
Starting notebook-publish.service - Republish the notebook when the vault has changed...
Finished notebook-publish.service - Republish the notebook when the vault has changed.
notebook-publish.service: Consumed 18.828s CPU time.
Starting notebook-publish.service - Republish the notebook when the vault has changed...
notebook-publish.service: Main process exited, code=exited, status=1/FAILURE
notebook-publish.service: Failed with result 'exit-code'.
Failed to start notebook-publish.service - Republish the notebook when the vault has changed.
notebook-publish.service: Triggering OnFailure= dependencies.

Claude: diagnose and fix; see job detail #job/notebook-publish [kanboard] - [ ] #213 adiaz@embeddedera.com / Finance: Import last month's Chase statement into the books (due 2026-10-05 OVERDUE) — Download last month's statement from Chase (PDF or CSV) and upload it on the books page (home → Books → Import statement). Check that the imported total matches the statement's closing balance. Decision: https://notebook.embeddedera.com/decisions/bank-access/ (task 160).

This task recurs: when it is verified closed, the next month's copy appears with the due date moved a month.

Deliverables: - Last month's Chase statement imported into the books - The month's closing balance in the books equals the statement

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - attachments>=1 - The Done comment names the statement month and the closing balance that matched [kanboard] - [ ] #242 adiaz@embeddedera.com / Finance: Report actual invoices, overdue receivables and supplier bills in Grafana (due 2026-10-17 OVERDUE) — Finance worker prepares source mapping. Current invoiced tile is a shipped/completed order proxy: relabel honestly. Preserve existing CPA-first and ledger-selection decisions; invoice issue and payment evidence required before balance/ageing totals.

Plan: https://notebook.embeddedera.com/projects/business-operations-automation/ Due date: SOP-017 default 30-day review horizon; not a delivery estimate.

Deliverables: - Correct order-proxy labels; source-backed invoice/bill balance design; Grafana finance overview after ledger source exists

Checked automatically by the register when this card reaches Review. Not steps for you. Verify: - Issued/paid/partial/credit/overdue and multiple currencies reconcile; no open-PO-as-debt or order-age-as-overdue inference; unavailable is not zero. [kanboard] - [ ] #243 adiaz@embeddedera.com / Finance: Stage and reconcile Chase statements and supplier invoice imports (due 2026-10-17 OVERDUE) — Finance + Purchasing worker sequentially. Await owner Chase CSV/PDF and LCSC/DigiKey records. Preserve private originals and hashes. Reconcile balances, deduplicate transactions, match supplier invoice to receipt/lot, separate fees/credits/transfers. Extend existing cost tasks210/239 and mail intake212.

Plan: https://notebook.embeddedera.com/projects/business-operations-automation/ Due date: SOP-017 default 30-day review horizon; not a delivery estimate.

Deliverables: - Private staging schema, source-linked import receipts, reconciliation exception report and repeatable importer

Checked automatically by the register when this card reaches Review. Not steps for you. Verify: - Duplicate imports produce no duplicate records; opening plus movements equals closing balance; no unreviewed tax categorization or raw statements in shared Notes/Git/Grafana. [kanboard] - [ ] #273 adiaz@embeddedera.com / Finance: Handle store check and wire orders without premature shipment (due 2026-10-19 OVERDUE) — Depends on #23 banking details and credit/deposit policy. Native check/wire orders stay on hold; finance records clearance and reconciles by order reference. Define partial payments, timeout/cancellation, overpayments and refunds; do not confuse order receipt with settlement.

Plan: https://notebook.embeddedera.com/projects/store-launch/ Angel is department default triage owner; implementation is not started. Default review date 2026-10-19 is not a launch promise.

Deliverables: - Approved instructions and clearance roles - offline payment acceptance tests - reconciliation procedure

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Each named deliverable is linked in the Done record with independently reproducible evidence. - Applicable failure, recovery and customer-data access cases pass in the isolated test environment. - Any production enablement has its acceptance record; unfinished dependencies remain explicitly open. [kanboard] - [ ] #276 adiaz@embeddedera.com / Finance: Approve store taxes and customer-facing sales policies (due 2026-10-19 OVERDUE) — Use qualified finance review for US and international tax obligations and B2B exemptions. Link existing #138 contracts/policies and #52 exemption evidence; define sales/returns/warranty, privacy/deletion, contact identity and shipping disclosures before launch. Do not enable worldwide checkout by default.

Plan: https://notebook.embeddedera.com/projects/store-launch/ Angel is department default triage owner; implementation is not started. Default review date 2026-10-19 is not a launch promise.

Deliverables: - Approved tax/destination configuration - published policy pages - exemption and order-total test evidence

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Each named deliverable is linked in the Done record with independently reproducible evidence. - Applicable failure, recovery and customer-data access cases pass in the isolated test environment. - Any production enablement has its acceptance record; unfinished dependencies remain explicitly open. [kanboard] - [ ] #193 adiaz@embeddedera.com / Production: Stock: USBLC6-2SC6-ES × 3000 (due 2026-10-14 OVERDUE) — Filed from the intake page by adiaz@embeddedera.com on 2026-09-14 21:22.

Opening stock count — captured on the spot, not yet in the ERP (SOP-023).

What to do

  1. Open the Stock count queue: https://home.embeddedera.com/stock
  2. Find this row, check the part match, pick the bin, press Add to ERP.
  3. That is all. The page writes the Done comment and moves this card to Review; the register closes it.

If the row says no part, create the part first (SOP-002 Part Creation), then come back.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260914-212226-b09a4e93.jpg (1543 kB, image/jpeg)


Stock:

{
  "mpn": "USBLC6-2SC6-ES",
  "manufacturer": null,
  "supplier": "LCSC",
  "supplier_pn": "C5180249",
  "description": "15V Clamp 4.5A pp ESD Diode",
  "quantity": 3000,
  "unit": "pcs",
  "lot_code": "0727-0004",
  "date_code": "26+",
  "location_hint": null,
  "kind": "component",
  "barcode_source": "lcsc-qr"
}

What the label says

WM2607270080
3275
0727-0004
QTY:3,000
C5180249
15VC Clamp4.5A pp ESD DiODE
MPN:USBLC6-2SC6-ES
3351-A-F03-002
MARK ULRE
C5180249
SOT-23-6L
D/C:26+

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - erp: stock/?part_detail=true&search=USBLC6-2SC6-ES count>=1 - The Done comment names the stock item id created in the ERP - attachments>=1 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260914-212226-b09a4e93.jpg] - [ ] #232 adiaz@embeddedera.com / Production: Cricket 008: flash, test and stock all 20 units in the ERP (due 2026-10-31) — Concept: with firmware verified and shells printed, run the twenty 008 boards through flash + actuator test as a build, label them and put them in stock so Sales can list them. Plan: https://notebook.embeddedera.com/projects/cricket-product/

Deliverables: - ERP: EE-A-0003-A Cricket and EE-P-0003-A PCB created, the 008 BOM imported (SOP-001/008) - Test procedure written into the build traveller (SOP-006): actuator test image, then production image - 20 units flashed, tested, serial-labelled, in Finished goods

Verify: - erp: part/?search=Cricket count>=2 - erp: stock/?search=Cricket count>=1 - Check by hand: 20 serials in Finished goods [kanboard] - [ ] #233 adiaz@embeddedera.com / Production: 3D print queue: Bambu H2S from Production tools (slice, orient, supports, AMS filament, build-order queue) (due 2026-10-16 OVERDUE) — Concept: print the repos' STLs on the H2S from a page under Production tools, several parts and quantities per plate, sliced headlessly with the house profile and the AMS filament; a build order queues its 3D-printed BOM parts automatically. Plan: https://notebook.embeddedera.com/projects/print-farm/

Deliverables: - Printer facts collected (IP, serial, access code, nozzle, plate, AMS map, house defaults) - Off-the-shelf check done and recorded; slicer + printer transport chosen - Page under Production tools: queue, add part/STL, quantity, status, stop - Build order with printed BOM parts fills the queue; finished prints received against the build (SOP-006) - SOP written for the process

Verify: - notes-contains: projects/print-farm.md "Status: built" - Check by hand: one plate printed from the page [kanboard] - [ ] #239 Production: Complete Robot / Remote / Finger kit BOMs and manufacturing costs — Establish complete native InvenTree BOM/cost records for Robot Cow 004B (181), Remote 006 (199), Finger 003 (201), and confirmed commercial kits. Angel reports USD 2,000 and USD 1,200 offers; USD 1,200 product identified as Tie-down Roper / Calf Roper Tiedown in Paul’s July 7 and August 14 emails; exact kit configuration remains pending. Historical invoice 1002 supports USD 2,000 Cow Control System, not current revision mapping.

Audit: https://notebook.embeddedera.com/projects/robot-kit-costing/ Current: Robot 29 BOM lines / 58 units; only two units priced, USD 0.236 partial roll-up. UPDATE: Remote now30 BOM lines/102 units incl PCB, Finger2 lines/7 units incl PCB, read back. Ten design parts EE-C-0185..0194 created with purchasing disabled; all new lines unvalidated. Assembly notes and LHG customer pricing evidence saved and verified. Invoice1002 original now attached as customer5 attachment2; optional filename field caused earlier errors and is omitted. Do not treat this audit as completed costing. Dependencies: existing #229 generic Robot component identities and #210 missing stock purchase costs. Confirm kit configuration/pricing with owner; obtain missing manufacturer/supplier quotes and production labor/test costs. Paul exemption outreach remains held under #52; no rescheduling.

Deliverables: - Verified revision-specific BOMs for all three assemblies and confirmed kit structure. - Dated cost evidence and quantity/currency assumptions for all required cost categories. - Confirmed kit selling prices in MRP and complete cost/coverage report. - Resolve attachment storage error and attach historical evidence without generating a new invoice/payment.

The register checks these after Review. Not steps for you. Verify: - Each board BOM matches approved design population/specifications; DNP and etched features excluded from purchases. - Required component, PCB, assembly, test, packaging and attributable freight/overhead costs have evidence; unknowns block full cost/margin claims. - USD 2,000 and USD 1,200 offers are explicitly identified by owner and mapped correctly; no unverified SKU or price inference. - Native MRP readback and reproducible cost roll-up evidence linked in Done comment.

Release conflicts: Remote R3 schematic4.7K/PCB5.23K; R14/R18 schematic5.1K/PCB4.7K; FB1 schematicDNP/PCBnotDNP. Loaded current schematic design intent only. Source metadata conflicts and all missing commercial qualification/image requirements tracked in new part notes. Before/after snapshots and API verification: planning/kit-costing/bom-load-receipt.json. [kanboard] - [ ] #240 adiaz@embeddedera.com / Production: Show inventory value, assembly capacity and limiting parts in Grafana (due 2026-10-17 OVERDUE) — Production + Engineering worker; orchestrator review. Compute unreserved usable stock and known lot valuation; max Cow/Remote/Finger and combined-kit capacity, requested-batch shortages, release readiness separately. Reuse native ERP logic. Depends on task239 for design qualification, but missing cost must not hide quantities.

Plan: https://notebook.embeddedera.com/projects/business-operations-automation/ Due date: SOP-017 default 30-day review horizon; not a delivery estimate.

Deliverables: - Grafana overview and inventory/capacity drill-down; tested calculation contract

Checked automatically by the register when this card reaches Review. Not steps for you. Verify: - Sandbox tests cover reservations, shared parts, unpriced stock, quarantine and incomplete BOM; production read-only results reconcile to ERP. [kanboard] - [ ] #284 adiaz@embeddedera.com / Production: Robot Cow 2/7 — verify the physical YY1 setup and turned 3×3 job (due 2026-09-27 OVERDUE) — Verify the machine and panel before placing any Robot Cow 004B components. Use Cow_Robot_Board/hardware/Robot Cow/Pick and Place 004B/Robot-Cow-004B-3x3-rot90ccw-YY1.csv; do not regenerate it from the generic setup file.

What to do: 1. Confirm slot 55 physically contains STM32G0B1KET6 in LQFP-32. 2. Confirm slot 58 physically contains the horizontal HRO USB-C used by J11. 3. Confirm slot 27 is the 10 µF reel used for C15. 4. Put a real panel in the machine and measure the V-cut pitch: 50 mm × 80 mm. 5. Confirm the 90° CCW orientation: fiducial 1 must be at machine coordinates X=7.24, Y=72.75. 6. Confirm R32 is skipped and C15 is enabled. Do not start placement if any item differs. 7. Attach photos of slots 55/58, the panel orientation, and the pitch measurement.

Deliverables: - Recorded verification of slots 55, 58 and 27 - Recorded 50 × 80 mm panel pitch and fiducial-1 position - Photos showing the checked machine setup and panel

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The Done comment records slot 55, slot 58, slot 27, panel pitch, fiducial coordinates, R32 skip and C15 enabled - attachments>=1 [assistant:Robot Cow BO-0001 finishing checklist 2026-09-20] - [ ] #286 adiaz@embeddedera.com / Production: Robot Cow 4/7 — confirm the physical location of the 275 STM32s (due 2026-09-27 OVERDUE) — ERP stock item 55 records approximately 275 STM32G0B1KET6 devices on Shop/Shelf A, but that location was never physically confirmed. Reconcile the shelf and ERP before the build depends on it.

What to do: 1. Find the STM32G0B1KET6 stock and confirm the reel/tray label. 2. Count or reasonably verify the recorded quantity of 275; record the counting method and any variance. 3. Confirm its actual storage location. 4. If it is not on Shop/Shelf A, move stock item 55 to the correct ERP location. 5. Add a Done comment naming the final location and confirmed quantity.

Deliverables: - Confirmed physical location and quantity for stock item 55 - ERP location corrected if it differed - Label or location photo

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The Done comment names stock item 55, the observed quantity and the final physical location - The ERP stock-item location matches the Done comment - attachments>=1 [assistant:Robot Cow BO-0001 finishing checklist 2026-09-20] - [ ] #288 adiaz@embeddedera.com / Production: Robot Cow 6/7 — update the tester and pass one Robot Cow label print (due 2026-09-27 OVERDUE) — The tester change that prints ERP part number EE-A-0002-A on Robot Cow bag labels is committed but still needs installing on the tester PC and one physical print check.

What to do: 1. On the tester PC, save or commit any local work before updating. 2. Pull the approved Universal_Tester change containing PR #1 / commit 2cdca41. 3. Confirm the Robot tester reports version 2.5.1 or newer. 4. Print one test bag label without consuming or completing a production serial. 5. Verify the label says EE-A-0002-A, identifies Robot Cow / H/W 004B, fits the Zebra 2 × 1.5 inch label, and is readable. 6. Attach a photo of the printed label and state the installed commit.

Deliverables: - Tester PC updated to the approved Robot label change - One readable physical test label showing EE-A-0002-A - Installed commit/version recorded

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The Done comment names the installed commit and tester version - The label photo visibly includes EE-A-0002-A and Robot Cow / H/W 004B - attachments>=1 [assistant:Robot Cow BO-0001 finishing checklist 2026-09-20] - [ ] #311 Production: Fix job tester-report-sync — Job: tester-report-sync (user-timer, area make)

What it is: Every minute refreshes tester results for Grafana.

Schedule: 2min after boot (OnBootUSec=2min)

Last 3 runs: - 2026-10-11T14:53:59-04:00: ok in 1s - 2026-10-11T14:55:07-04:00: ok in 2s - 2026-10-11T14:56:09-04:00: failed rc=203 in 0s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

Starting tester-report-sync.service - Mirror tester results into the Grafana reports database...
{"events": 182, "serials": 148}
Finished tester-report-sync.service - Mirror tester results into the Grafana reports database.
Starting tester-report-sync.service - Mirror tester results into the Grafana reports database...
{"events": 182, "serials": 148}
Finished tester-report-sync.service - Mirror tester results into the Grafana reports database.
Starting tester-report-sync.service - Mirror tester results into the Grafana reports database...
{"events": 182, "serials": 148}
Finished tester-report-sync.service - Mirror tester results into the Grafana reports database.
Starting tester-report-sync.service - Mirror tester results into the Grafana reports database...
{"events": 182, "serials": 148}
Finished tester-report-sync.service - Mirror tester results into the Grafana reports database.
Starting tester-report-sync.service - Mirror tester results into the Grafana reports database...
{"events": 182, "serials": 148}
Finished tester-report-sync.service - Mirror tester results into the Grafana reports database.
Starting tester-report-sync.service - Mirror tester results into the Grafana reports database...
tester-report-sync.service: Main process exited, code=exited, status=203/EXEC
tester-report-sync.service: Failed with result 'exit-code'.
Failed to start tester-report-sync.service - Mirror tester results into the Grafana reports database.
tester-report-sync.service: Triggering OnFailure= dependencies.

Claude: diagnose and fix; see job detail #job/tester-report-sync [kanboard] - [ ] #324 Production: Fix job erp-verify — Job: erp-verify (cron, area make)

What it is: Sunday restores the newest InvenTree dump into a throwaway Postgres and checks row counts.

Schedule: Every Sunday at 06:15 (15 6 * * 0)

Last 3 runs: - 2026-10-04T06:15:01-04:00: ok in 26s - 2026-10-11T06:15:01-04:00: ok in 39s - 2026-10-18T06:15:01-04:00: failed rc=2 in 31s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

=== 2026-10-11T06:15:01-04:00 start: /home/angel/.local/bin/erp-backup verify ===
2026-10-11 06:15:03  === verify: newest R2 stamp is 2026-10-11_0315 ===
2026-10-11 06:15:14  verify: starting throwaway postgres:17 as erp-verify-pg-3398291 on 127.0.0.1:24481
2026-10-11 06:15:22  verify 2026-10-11_0315: part categories=11 (expect at least 10), stock locations=23 (expect at least 20)
2026-10-11 06:15:22  verify: kanboard tasks restored, 303 row(s)
2026-10-11 06:15:22  verify: assistant db restored, 143 row(s)
2026-10-11 06:15:22  verify: vaultwarden restored, 14 row(s)
2026-10-11 06:15:22  verify PASS
2026-10-11 06:15:24  === store-verify: newest R2 store stamp is 2026-10-11_0230 ===
2026-10-11 06:15:40  store-verify 2026-10-11_0230: users=1 products=1 options=458 tax_rates=0 shipping_zones=1 blog_public=1 currency=USD country=US:NC home=https://store.embeddedera.com cricket_image_files=10
2026-10-11 06:15:40  store-verify PASS
=== 2026-10-11T06:15:40-04:00 end rc=0 in 39s ===
=== 2026-10-18T06:15:01-04:00 start: /home/angel/.local/bin/erp-backup verify ===
2026-10-18 06:15:04  === verify: newest R2 stamp is 2026-10-18_0315 ===
2026-10-18 06:15:18  verify: starting throwaway postgres:17 as erp-verify-pg-3897750 on 127.0.0.1:21983
2026-10-18 06:15:32  verify 2026-10-18_0315: part categories=11 (expect at least 10), stock locations=23 (expect at least 20)
2026-10-18 06:15:32  verify: kanboard tasks restored, 317 row(s)
2026-10-18 06:15:32  verify: assistant db restored, 143 row(s)
2026-10-18 06:15:32  verify: vaultwarden restored, 14 row(s)
=== 2026-10-18T06:15:32-04:00 end rc=2 in 31s ===

Claude: diagnose and fix; see job detail #job/erp-verify [kanboard] - [ ] #210 yrosado@embeddedera.com / Purchasing: Enter unit cost on the 17 stock items with no price source (LCSC order history) (due 2026-09-28 OVERDUE) — The opening stock count put 19 reels and bags into the ERP with no cost. Eight got an estimated unit cost from the DigiKey/Mouser list price (noted on each item as an estimate, not an invoice). These have no price source we can query: most are LCSC parts, and LCSC has no public lookup.

Find the unit cost for each from the LCSC/JLCPCB order history (the order confirmations in email) and enter it on the stock item: Stock → item → Edit → Purchase price (USD). If an invoice exists, attach it to the item. When the number is an estimate, say so in the item's notes.

  • stock item 5: EE-C-0001 1N4001W × 250
  • stock item 4: EE-K-0001 Antistatic bag 8 x 12 cm × 170
  • stock item 23: EE-C-0165 CGA0603X7R104K500JT × 8000
  • stock item 27: EE-C-0160 CL10A226KP8NNNC × 4000
  • stock item 22: EE-C-0164 FRC0603F1001TS × 10000
  • stock item 24: EE-C-0166 FRC0603F1002TS × 10000
  • stock item 16: EE-C-0157 FRC0603F5231TS × 5000
  • stock item 12: EE-C-0153 MCP6001T-I/OT(UMW) × 3000
  • stock item 17: EE-C-0158 RC0603F0000TS × 5000
  • stock item 15: EE-C-0086 Relay_SPDT_5V × 46
  • stock item 26: EE-C-0083 R_Potentiometer_Trim_10k_25TURN × 150
  • stock item 25: EE-C-0167 SMXMS-04K-TR × 500
  • stock item 11: EE-C-0152 TZ-5050S2RGB-5V-I4-H1 × 1000
  • stock item 13: EE-C-0155 USBLC6-2SC6-ES × 3000
  • stock item 19: EE-C-0162 Xj0603ar-bacyx × 4000
  • stock item 14: EE-C-0154 YBK0805X5R476M6R3NT × 3000
  • stock item 10: EE-C-0151 AM90 × 100 (DigiKey matched the wrong part; needs the real price)

Deliverables: - Every stock item above has a purchase price in USD - The source of each price (order number or "estimated") is in the item's notes

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - erp: stock/?purchase_price_max=0&limit=1 count>=0 - The Done comment lists which items got an invoice price and which are estimates

Note 2026-09-15: the prices are in the PDF attachments (LCSC Commercial Invoice on each Shipped Notification email; DigiKey SALESORDER_EMAIL pdf on each PO Acknowledgement). Claude checked the mailbox and cannot download attachments from a session; task #212 gives the server mailbox access so this becomes automatic. Until then: open the PDF, read the unit price, enter it. [kanboard] - [ ] #246 adiaz@embeddedera.com / Purchasing: Order acknowledgement from adiaz (due 2026-10-17 OVERDUE) — Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:38.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-103810-10d923d8.csv (0 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: LCSC
  • Date: not found
  • Document #: not found
  • Total: not found
  • Subtotal: 936.3
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • 4 Position Wire to Board Terminal Block Through Hole 3.5mm — qty 500 — 100.35
  • 5 Position Wire to Board Terminal Block Through Hole 3.5mm — qty 500 — 112.35
  • 5 Position Wire to Board Terminal Block Through Hole 2.54mm — qty 1000 — 273.6
  • 2 Position Wire to Board Terminal Block Through Hole 2.54mm — qty 2000 — 216.0
  • Tactile Switch SPST-NO 200gf SMD (SMT) Tab Surface Mount — qty 2000 — 234.0

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C2757925,DB125-3.5-4P-GN-S,DORABO,,"Through Hole,P=3.5mm",4 Position Wire to Board Terminal Block Through Hole 3.5mm,YES,500,0.2007,100.35,,,
C3646874,DB125-3.5-5P-GN-S,DORABO,,"Through Hole,P=3.5mm",5 Position Wire to Board Terminal Block Through Hole 3.5mm,YES,500,0.2247,112.35,,,
C918123,DB125-2.54-5P-GN-S,DORABO,,"Through Hole,P=2.54mm",5 Position Wire to Board Terminal Block Through Hole 2.54mm,YES,1000,0.2736,273.60,,,
C918120,DB125-2.54-2P-GN-S,DORABO,,"Through Hole,P=2.54mm",2 Position Wire to Board Terminal Block Through Hole 2.54mm,YES,2000,0.108,216.00,,,
C306880,B3SL-1002P,OMRON,,SMD,Tactile Switch SPST-NO 200gf SMD (SMT) Tab Surface Mount,YES,2000,0.117,234.00,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - attachments>=1 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-103810-10d923d8.csv] - [ ] #247 adiaz@embeddedera.com / Purchasing: Order acknowledgement from adiaz (due 2026-10-17 OVERDUE) — Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:38.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-103822-a3094270.csv (1 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: LCSC
  • Date: not found
  • Document #: not found
  • Total: not found
  • Subtotal: 410.91
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • USB-C (USB TYPE-C) Receptacle Connector 16 Position Surface Mount — qty 250 — 43.43
  • ARM Cortex-M0+ 32 Bit 64MHz LQFP-48(7x7) Microcontrollers RoHS — qty 250 — 311.68
  • Emerald Green 534nm LED Indication - Discrete 3.4V 1206 — qty 3000 — 16.2
  • Orange 605nm LED Indication - Discrete 2.3V 1206 — qty 3000 — 17.7
  • 5.23kΩ ±1% 100mW 0603 Thick Film Resistor — qty 5000 — 3.5
  • Red 620nm LED Indication - Discrete 2.4V 1206 — qty 3000 — 15.9
  • 100mW 0Ω 75V Thick Film Resistor ±400ppm/℃ ±1% 0603 Chip Resistor - Surface Mount — qty 5000 — 2.5

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C3151749,TYPE-C 16PLT-H10.0,SHOU HAN,,SMD,USB-C (USB TYPE-C) Receptacle Connector 16 Position Surface Mount,YES,250,0.1737,43.43,,,
C2847904,STM32G0B1CBT6,ST,,LQFP-48(7x7),ARM Cortex-M0+ 32 Bit 64MHz LQFP-48(7x7) Microcontrollers RoHS,YES,250,1.2467,311.68,,,
C965825,XL-3216UGC,XINGLIGHT,,1206,Emerald Green 534nm LED Indication - Discrete 3.4V 1206,YES,3000,0.0054,16.20,,,
C965823,XL-3216UOC,XINGLIGHT,,1206,Orange 605nm LED Indication - Discrete 2.3V 1206,YES,3000,0.0059,17.70,,,
C2930111,FRC0603F5231TS,FOJAN,,0603,5.23kΩ ±1% 100mW 0603 Thick Film Resistor,YES,5000,0.0007,3.50,,,
C965822,XL-3216SURC,XINGLIGHT,,1206,Red 620nm LED Indication - Discrete 2.4V 1206,YES,3000,0.0053,15.90,,,
C2906974,FRC0603F0000TS,FOJAN,,0603,"100mW 0Ω 75V Thick Film Resistor ±400ppm/℃ ±1% 0603 Chip Resistor - Surface Mount ",YES,5000,0.0005,2.50,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - attachments>=1 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-103822-a3094270.csv] - [ ] #248 adiaz@embeddedera.com / Purchasing: Order acknowledgement from adiaz (due 2026-10-17 OVERDUE) — Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:38.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-103833-828afd2a.csv (0 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: not found
  • Date: not found
  • Document #: not found
  • Total: 65.84
  • Subtotal: 65.84
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • Connector Header 4 position 2mm Pitch 2A Through Hole -25℃~+85℃ — qty 200 — 4.26
  • E01-ML01SP4 — qty 10 — 35.17
  • Dip Switch SPST 4 Position Surface Mount-8P,6.7x5.4mm Slide, Recessed — qty 100 — 26.41

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C7429580,ZX-HY2.0-4PZZ,Megastar,,"Through Hole,P=2mm",Connector Header 4 position 2mm Pitch 2A Through Hole -25℃~+85℃,YES,200,0.0213,4.26,,,
C97340,E01-ML01SP4,EBYTE,,-,-,-,10,3.5166,35.17,,,
C25503172,HY-DSHP04TS,HanElectricity,,"SMD,P=1.27mm","Dip Switch SPST 4 Position Surface Mount-8P,6.7x5.4mm Slide, Recessed",YES,100,0.2641,26.41,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - attachments>=1 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-103833-828afd2a.csv] - [ ] #249 adiaz@embeddedera.com / Purchasing: Order acknowledgement from adiaz (due 2026-10-17 OVERDUE) — Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:38.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-103844-2b1208d6.csv (1 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: LCSC
  • Date: not found
  • Document #: not found
  • Total: not found
  • Subtotal: 74.85
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • 64Kbit 1MHz I2C SOT-23-5 Memory RoHS — qty 500 — 25.3
  • Boost Switching Regulator IC Fixed 5V 1 Output SOT-23-5 — qty 50 — 5.26
  • 600mA 2.2uH ±20% 400mA 160mΩ Multilayer inductor 0805 Fixed Inductors RoHS — qty 100 — 4.6
  • Connector Header 2 position 1.25mm Pitch 1A Through Hole -25℃~+85℃ — qty 50 — 0.41
  • ±25% ±250ppm/℃ 150mW 10kΩ SMD-3P,3.8x3.6mm Trimmer Potentiometers RoHS — qty 150 — 12.83
  • ±10% ±250ppm/℃ 500mW 10kΩ Through Hole-3P,9.5x4.9mm Trimmer Potentiometers RoHS — qty 150 — 15.17
  • Power Relay 1 Form C: 1C (SPDT-CO) 5V Coil Through Hole,15.6x19.2mm — qty 50 — 11.28

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C41408505,24C64S(XBLW),XBLW,,SOT-23-5,64Kbit 1MHz I2C SOT-23-5 Memory RoHS,YES,500,0.0506,25.30,,,
C2071163,TPS613222ADBVR,TI,,SOT-23-5,Boost Switching Regulator IC Fixed 5V 1 Output SOT-23-5,YES,50,0.1052,5.26,,,
C383404,MLZ2012M2R2HT000,TDK,,0805,600mA 2.2uH ±20% 400mA 160mΩ Multilayer inductor 0805 Fixed Inductors RoHS,YES,100,0.046,4.60,,,
C7433543,HCZZ0566-2,Hong Cheng,,"Through Hole,p=1.25mm",Connector Header 2 position 1.25mm Pitch 1A Through Hole -25℃~+85℃,YES,50,0.0081,0.41,,,
C719176,TC33X-2-103E,BOURNS,,"SMD-3P,3.8x3.6mm","±25% ±250ppm/℃ 150mW 10kΩ SMD-3P,3.8x3.6mm Trimmer Potentiometers RoHS",YES,150,0.0855,12.83,,,
C118954,3296W-1-103,BOCHEN,,"Through Hole-3P,9.5x4.9mm","±10% ±250ppm/℃ 500mW 10kΩ Through Hole-3P,9.5x4.9mm Trimmer Potentiometers RoHS",YES,150,0.1011,15.17,,,
C35449,SRD-05VDC-SL-C,Songle Relay,,"Through Hole,19.2x15.6mm","Power Relay 1 Form C: 1C (SPDT-CO) 5V Coil Through Hole,15.6x19.2mm",YES,50,0.2255,11.28,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - attachments>=1 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-103844-2b1208d6.csv] - [ ] #250 adiaz@embeddedera.com / Purchasing: Order acknowledgement from adiaz (due 2026-10-17 OVERDUE) — Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:38.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-103855-3e47d7c8.csv (1 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: LCSC
  • Date: not found
  • Document #: not found
  • Total: 252.4
  • Subtotal: 252.4
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • Polymeric PTC Resettable Fuse 16V 500mA Surface Mount 0805 — qty 5000 — 121.5
  • 100mW 1kΩ 75V Thick Film Resistor ±100ppm/℃ ±1% 0603 Chip Resistor - Surface Mount RoHS — qty 10000 — 6.0
  • 10kΩ ±1% 100mW 0603 Thick Film Resistor — qty 10000 — 5.0
  • 1kΩ ±1% 100mW 0603 Thick Film Resistor — qty 10000 — 5.0
  • 100nF ±10% 50V Ceramic Capacitor X7R 0603 — qty 8000 — 8.8
  • Tactile Switch SPST 250gf 2.5mm J-Lead 4.2mm x 3.2mm Surface Mount — qty 3000 — 59.1
  • USB-C (USB TYPE-C) Receptacle Connector 16 Position Surface Mount, Right Angle — qty 1000 — 35.6
  • Diode Array 1 Pair Series Connection 75V 215mA Surface Mount SOT-23 — qty 3000 — 11.4

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C2760262,SMD0805-050C-16V,BNstar,,0805,Polymeric PTC Resettable Fuse 16V 500mA Surface Mount 0805,YES,5000,0.0243,121.50,,,
C22548,RC0603FR-071KL,YAGEO,,0603,100mW 1kΩ 75V Thick Film Resistor ±100ppm/℃ ±1% 0603 Chip Resistor - Surface Mount RoHS,YES,10000,0.0006,6.00,,,
C2906982,FRC0603F1002TS,FOJAN,,0603,10kΩ ±1% 100mW 0603 Thick Film Resistor,YES,10000,0.0005,5.00,,,
C2907002,FRC0603F1001TS,FOJAN,,0603,1kΩ ±1% 100mW 0603 Thick Film Resistor,YES,10000,0.0005,5.00,,,
C6119867,CGA0603X7R104K500JT,HRE,,0603,100nF ±10% 50V Ceramic Capacitor X7R 0603,YES,8000,0.0011,8.80,,,
C2681476,TS3425BA,SHOU HAN,,"SMD-4P,4.2x3.2mm",Tactile Switch SPST 250gf 2.5mm J-Lead 4.2mm x 3.2mm Surface Mount,YES,3000,0.0197,59.10,,,
C2765186,TYPE-C 16PIN 2MD(073),SHOU HAN,,SMD,"USB-C (USB TYPE-C) Receptacle Connector 16 Position Surface Mount, Right Angle",YES,1000,0.0356,35.60,,,
C916421,BAV99,JSMSEMI,,SOT-23,Diode Array 1 Pair Series Connection 75V 215mA Surface Mount SOT-23,YES,3000,0.0038,11.40,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - attachments>=1 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-103855-3e47d7c8.csv] - [ ] #251 adiaz@embeddedera.com / Purchasing: Order acknowledgement from adiaz (due 2026-10-17 OVERDUE) — Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:39.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-103908-0c4ef57d.csv (0 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: not found
  • Date: not found
  • Document #: not found
  • Total: not found
  • Subtotal: 73.06
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • Dip Switch SPST 4 Position Surface Mount-8P,6.7x5.4mm Slide, Recessed — qty 200 — 54.26
  • 1uF ±10% 50V Ceramic Capacitor X7R 0603 — qty 4000 — 18.8

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C25503172,HY-DSHP04TS,HanElectricity,,"SMD,P=1.27mm","Dip Switch SPST 4 Position Surface Mount-8P,6.7x5.4mm Slide, Recessed",YES,200,0.2713,54.26,,,
C5199872,CL10B105KB8NQNC,Samsung Electro-Mechanics,,0603,1uF ±10% 50V Ceramic Capacitor X7R 0603,YES,4000,0.0047,18.80,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - attachments>=1 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-103908-0c4ef57d.csv] - [ ] #252 adiaz@embeddedera.com / Purchasing: Duplicate LCSC CSV — see task #246 (due 2026-10-17 OVERDUE) — Duplicate CSV removed at Angel's request after exact SHA-256 verification (a20b08338aa4b9261e3529b1291be0f8530435902cd6eece0b6d0bfa6a7f2650). Original preserved on task #246: https://tasks.embeddedera.com/task/246. Use only the canonical file when totaling purchases. No ERP stock or financial transaction created.

Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:47.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-103810-10d923d8.csv (0 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: not found
  • Date: not found
  • Document #: not found
  • Total: not found
  • Subtotal: 936.3
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • 4 Position Wire to Board Terminal Block Through Hole 3.5mm — qty 500 — 100.35
  • 5 Position Wire to Board Terminal Block Through Hole 3.5mm — qty 500 — 112.35
  • 5 Position Wire to Board Terminal Block Through Hole 2.54mm — qty 1000 — 273.6
  • 2 Position Wire to Board Terminal Block Through Hole 2.54mm — qty 2000 — 216.0
  • Tactile Switch SPST-NO 200gf SMD (SMT) Tab Surface Mount — qty 2000 — 234.0

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C2757925,DB125-3.5-4P-GN-S,DORABO,,"Through Hole,P=3.5mm",4 Position Wire to Board Terminal Block Through Hole 3.5mm,YES,500,0.2007,100.35,,,
C3646874,DB125-3.5-5P-GN-S,DORABO,,"Through Hole,P=3.5mm",5 Position Wire to Board Terminal Block Through Hole 3.5mm,YES,500,0.2247,112.35,,,
C918123,DB125-2.54-5P-GN-S,DORABO,,"Through Hole,P=2.54mm",5 Position Wire to Board Terminal Block Through Hole 2.54mm,YES,1000,0.2736,273.60,,,
C918120,DB125-2.54-2P-GN-S,DORABO,,"Through Hole,P=2.54mm",2 Position Wire to Board Terminal Block Through Hole 2.54mm,YES,2000,0.108,216.00,,,
C306880,B3SL-1002P,OMRON,,SMD,Tactile Switch SPST-NO 200gf SMD (SMT) Tab Surface Mount,YES,2000,0.117,234.00,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - Canonical CSV retained on task #246, SHA-256 a20b08338aa4b9261e3529b1291be0f8530435902cd6eece0b6d0bfa6a7f2650 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-103810-10d923d8.csv] - [ ] #253 adiaz@embeddedera.com / Purchasing: Duplicate LCSC CSV — see task #248 (due 2026-10-17 OVERDUE) — Duplicate CSV removed at Angel's request after exact SHA-256 verification (db89d68ac5a8154586b521f83ed7320efbc5d4d9afd2445c1882cde1af8d14bc). Original preserved on task #248: https://tasks.embeddedera.com/task/248. Use only the canonical file when totaling purchases. No ERP stock or financial transaction created.

Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:47.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-103833-828afd2a.csv (0 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: not found
  • Date: not found
  • Document #: not found
  • Total: not found
  • Subtotal: 65.84
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • Connector Header 4 position 2mm Pitch 2A Through Hole -25℃~+85℃ — qty 200 — 4.26
  • E01-ML01SP4 — qty 10 — 35.17
  • Dip Switch SPST 4 Position Surface Mount-8P,6.7x5.4mm Slide, Recessed — qty 100 — 26.41

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C7429580,ZX-HY2.0-4PZZ,Megastar,,"Through Hole,P=2mm",Connector Header 4 position 2mm Pitch 2A Through Hole -25℃~+85℃,YES,200,0.0213,4.26,,,
C97340,E01-ML01SP4,EBYTE,,-,-,-,10,3.5166,35.17,,,
C25503172,HY-DSHP04TS,HanElectricity,,"SMD,P=1.27mm","Dip Switch SPST 4 Position Surface Mount-8P,6.7x5.4mm Slide, Recessed",YES,100,0.2641,26.41,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - Canonical CSV retained on task #248, SHA-256 db89d68ac5a8154586b521f83ed7320efbc5d4d9afd2445c1882cde1af8d14bc [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-103833-828afd2a.csv] - [ ] #254 adiaz@embeddedera.com / Purchasing: Duplicate LCSC CSV — see task #250 (due 2026-10-17 OVERDUE) — Duplicate CSV removed at Angel's request after exact SHA-256 verification (132f17bc137e7276318742d6db442ccc1d4c4e33974de0b9ecc535443938c74b). Original preserved on task #250: https://tasks.embeddedera.com/task/250. Use only the canonical file when totaling purchases. No ERP stock or financial transaction created.

Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:48.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-103855-3e47d7c8.csv (1 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: LCSC
  • Date: not found
  • Document #: not found
  • Total: not found
  • Subtotal: 252.4
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • Polymeric PTC Resettable Fuse 16V 500mA Surface Mount 0805 — qty 5000 — 121.5
  • 100mW 1kΩ 75V Thick Film Resistor ±100ppm/℃ ±1% 0603 Chip Resistor - Surface Mount RoHS — qty 10000 — 6.0
  • 10kΩ ±1% 100mW 0603 Thick Film Resistor — qty 10000 — 5.0
  • 1kΩ ±1% 100mW 0603 Thick Film Resistor — qty 10000 — 5.0
  • 100nF ±10% 50V Ceramic Capacitor X7R 0603 — qty 8000 — 8.8
  • Tactile Switch SPST 250gf 2.5mm J-Lead 4.2mm x 3.2mm Surface Mount — qty 3000 — 59.1
  • USB-C (USB TYPE-C) Receptacle Connector 16 Position Surface Mount, Right Angle — qty 1000 — 35.6
  • Diode Array 1 Pair Series Connection 75V 215mA Surface Mount SOT-23 — qty 3000 — 11.4

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C2760262,SMD0805-050C-16V,BNstar,,0805,Polymeric PTC Resettable Fuse 16V 500mA Surface Mount 0805,YES,5000,0.0243,121.50,,,
C22548,RC0603FR-071KL,YAGEO,,0603,100mW 1kΩ 75V Thick Film Resistor ±100ppm/℃ ±1% 0603 Chip Resistor - Surface Mount RoHS,YES,10000,0.0006,6.00,,,
C2906982,FRC0603F1002TS,FOJAN,,0603,10kΩ ±1% 100mW 0603 Thick Film Resistor,YES,10000,0.0005,5.00,,,
C2907002,FRC0603F1001TS,FOJAN,,0603,1kΩ ±1% 100mW 0603 Thick Film Resistor,YES,10000,0.0005,5.00,,,
C6119867,CGA0603X7R104K500JT,HRE,,0603,100nF ±10% 50V Ceramic Capacitor X7R 0603,YES,8000,0.0011,8.80,,,
C2681476,TS3425BA,SHOU HAN,,"SMD-4P,4.2x3.2mm",Tactile Switch SPST 250gf 2.5mm J-Lead 4.2mm x 3.2mm Surface Mount,YES,3000,0.0197,59.10,,,
C2765186,TYPE-C 16PIN 2MD(073),SHOU HAN,,SMD,"USB-C (USB TYPE-C) Receptacle Connector 16 Position Surface Mount, Right Angle",YES,1000,0.0356,35.60,,,
C916421,BAV99,JSMSEMI,,SOT-23,Diode Array 1 Pair Series Connection 75V 215mA Surface Mount SOT-23,YES,3000,0.0038,11.40,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - Canonical CSV retained on task #250, SHA-256 132f17bc137e7276318742d6db442ccc1d4c4e33974de0b9ecc535443938c74b [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-103855-3e47d7c8.csv] - [ ] #255 adiaz@embeddedera.com / Purchasing: Order acknowledgement from adiaz (due 2026-10-17 OVERDUE) — Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:48.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-104806-087d2df5.csv (0 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: not found
  • Date: not found
  • Document #: not found
  • Total: not found
  • Subtotal: 1447.36
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • ARM Cortex-M0+ 32 Bit 64MHz LQFP-48(7x7) Microcontrollers RoHS — qty 250 — 1307.38
  • ARM Cortex-M4 32 Bit 168MHz LQFP-100(14x14) Microcontrollers RoHS — qty 1 — 9.48
  • Diode Array 1 Pair Series Connection 30V 200mA Surface Mount SOT-23 — qty 6000 — 113.4
  • Diode Independent 50V 1A Surface Mount SOD-123FL — qty 3000 — 17.1

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C2847904,STM32G0B1CBT6,ST,,LQFP-48(7x7),ARM Cortex-M0+ 32 Bit 64MHz LQFP-48(7x7) Microcontrollers RoHS,YES,250,5.2295,1307.38,,,
C966951,STM32F417VGT6,ST,,LQFP-100(14x14),ARM Cortex-M4 32 Bit 168MHz LQFP-100(14x14) Microcontrollers RoHS,YES,1,9.4773,9.48,,,
C47546,"BAT54S,215",Nexperia,,SOT-23,Diode Array 1 Pair Series Connection 30V 200mA Surface Mount SOT-23,YES,6000,0.0189,113.40,,,
C18199085,1N4001W,R+O,,SOD-123FL,Diode Independent 50V 1A Surface Mount SOD-123FL,YES,3000,0.0057,17.10,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - attachments>=1 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-104806-087d2df5.csv] - [ ] #256 adiaz@embeddedera.com / Purchasing: Duplicate LCSC CSV — see task #251 (due 2026-10-17 OVERDUE) — Duplicate CSV removed at Angel's request after exact SHA-256 verification (638d0b083732be587f75ded947d80fa51f7d8a805af419ab5e2f879024d1a3da). Original preserved on task #251: https://tasks.embeddedera.com/task/251. Use only the canonical file when totaling purchases. No ERP stock or financial transaction created.

Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:48.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-103908-0c4ef57d.csv (0 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: LCSC
  • Date: not found
  • Document #: not found
  • Total: not found
  • Subtotal: 73.06
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • Dip Switch SPST 4 Position Surface Mount-8P,6.7x5.4mm Slide, Recessed — qty 200 — 54.26
  • 1uF ±10% 50V Ceramic Capacitor X7R 0603 — qty 4000 — 18.8

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C25503172,HY-DSHP04TS,HanElectricity,,"SMD,P=1.27mm","Dip Switch SPST 4 Position Surface Mount-8P,6.7x5.4mm Slide, Recessed",YES,200,0.2713,54.26,,,
C5199872,CL10B105KB8NQNC,Samsung Electro-Mechanics,,0603,1uF ±10% 50V Ceramic Capacitor X7R 0603,YES,4000,0.0047,18.80,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - Canonical CSV retained on task #251, SHA-256 638d0b083732be587f75ded947d80fa51f7d8a805af419ab5e2f879024d1a3da [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-103908-0c4ef57d.csv] - [ ] #257 adiaz@embeddedera.com / Purchasing: Order acknowledgement from adiaz (due 2026-10-17 OVERDUE) — Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:48.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-104814-2c8b65de.csv (1 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: not found
  • Date: not found
  • Document #: not found
  • Total: 582.45
  • Subtotal: 582.45
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • USB-C (USB TYPE-C) Receptacle Connector 16 Position Surface Mount — qty 500 — 87.15
  • 47uF X5R ±20% 6.3V 0805 Ceramic Capacitors — qty 3000 — 201.3
  • USB-A (USB TYPE-A) Receptacle Connector 4 Position Right Angle — qty 100 — 5.6
  • Lithium Battery 500mA SOT-23-6 Battery Management — qty 3000 — 61.2
  • 15VC Clamp 4.5A Ipp ESD DIODE SOT-23-6L — qty 3000 — 51.9
  • SMD5050-4P LED Addressable, Specialty RoHS — qty 1000 — 19.9
  • 23mA 1 4.5mV 600V/ms 1pA 76dB 100uA 1MHz Rail-to-Rail Input, Rail-to-Rail Output SOT-23-5 Instrumentation, Op Amps, Buffer Amps RoHS — qty 3000 — 155.4

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C3151749,TYPE-C 16PLT-H10.0,SHOU HAN,,SMD,USB-C (USB TYPE-C) Receptacle Connector 16 Position Surface Mount,YES,500,0.1743,87.15,,,
C55072776,YBK0805X5R476M6R3NT,FH-BK(Guangdong Fenghua Bangke Elec),,0805,"47uF X5R ±20% 6.3V 0805 Ceramic Capacitors ",YES,3000,0.0671,201.30,,,
C404965,AM90,SHOU HAN,,"Through Hole,Right Angle",USB-A (USB TYPE-A) Receptacle Connector 4 Position Right Angle,YES,100,0.056,5.60,,,
C54899531,TP4057(AT),AOTE,,SOT-23-6,"Lithium Battery 500mA SOT-23-6 Battery Management ",YES,3000,0.0204,61.20,,,
C5180249,USBLC6-2SC6-ES,ElecSuper,,SOT-23-6L,15VC Clamp 4.5A Ipp ESD DIODE SOT-23-6L,YES,3000,0.0173,51.90,,,
C26167850,TZ-5050S2RGB-5V-I4-H1,TUOZHAN,,SMD5050-4P,"SMD5050-4P LED Addressable, Specialty RoHS",YES,1000,0.0199,19.90,,,
C32713103,MCP6001T-I/OT(UMW),UMW,,SOT-23-5,"23mA 1 4.5mV 600V/ms 1pA 76dB 100uA 1MHz Rail-to-Rail Input, Rail-to-Rail Output SOT-23-5 Instrumentation, Op Amps, Buffer Amps RoHS",YES,3000,0.0518,155.40,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - attachments>=1 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-104814-2c8b65de.csv] - [ ] #258 adiaz@embeddedera.com / Purchasing: Order acknowledgement from adiaz (due 2026-10-17 OVERDUE) — Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:48.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-104820-4a55590a.csv (0 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: not found
  • Date: not found
  • Document #: not found
  • Total: 631.4
  • Subtotal: 631.4
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • Tactile Switch SPST-NO 200gf SMD (SMT) Tab Surface Mount — qty 2000 — 335.0
  • ARM Cortex-M0+ 32 Bit 64MHz LQFP-48(7x7) Microcontrollers RoHS — qty 100 — 176.31
  • Dip Switch 4 Position Surface Mount-8P,6.6x5.4mm 25mA 24V — qty 500 — 116.75
  • 4 USB Hub 480Mbps USB 2.0 SSOP-28-150mil Interface Controllers RoHS — qty 5 — 3.34

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C306880,B3SL-1002P,OMRON,,SMD,Tactile Switch SPST-NO 200gf SMD (SMT) Tab Surface Mount,YES,2000,0.1675,335.00,,,
C2847904,STM32G0B1CBT6,ST,,LQFP-48(7x7),ARM Cortex-M0+ 32 Bit 64MHz LQFP-48(7x7) Microcontrollers RoHS,YES,100,1.7631,176.31,,,
C19272176,SMXMS-04K-TR,SM Switch,,"SMD,P=1.27mm","Dip Switch 4 Position Surface Mount-8P,6.6x5.4mm 25mA 24V",YES,500,0.2335,116.75,,,
C9359,FE1.1S-BSOP28BCN,TERMINUS,,SSOP-28-150mil,4 USB Hub 480Mbps USB 2.0 SSOP-28-150mil Interface Controllers RoHS,YES,5,0.6681,3.34,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - attachments>=1 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-104820-4a55590a.csv] - [ ] #259 adiaz@embeddedera.com / Purchasing: Duplicate LCSC CSV — see task #258 (due 2026-10-17 OVERDUE) — Duplicate CSV removed at Angel's request after exact SHA-256 verification (bb971a467786ddc07fafadb2a532bcd35fe4615ba429ddb986449f30c57300e8). Original preserved on task #258: https://tasks.embeddedera.com/task/258. Use only the canonical file when totaling purchases. No ERP stock or financial transaction created.

Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:48.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-104820-4a55590a.csv (0 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: not found
  • Date: not found
  • Document #: not found
  • Total: 631.4
  • Subtotal: 631.4
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • Tactile Switch SPST-NO 200gf SMD (SMT) Tab Surface Mount — qty 2000 — 335.0
  • ARM Cortex-M0+ 32 Bit 64MHz LQFP-48(7x7) Microcontrollers RoHS — qty 100 — 176.31
  • Dip Switch 4 Position Surface Mount-8P,6.6x5.4mm 25mA 24V — qty 500 — 116.75
  • 4 USB Hub 480Mbps USB 2.0 SSOP-28-150mil Interface Controllers RoHS — qty 5 — 3.34

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C306880,B3SL-1002P,OMRON,,SMD,Tactile Switch SPST-NO 200gf SMD (SMT) Tab Surface Mount,YES,2000,0.1675,335.00,,,
C2847904,STM32G0B1CBT6,ST,,LQFP-48(7x7),ARM Cortex-M0+ 32 Bit 64MHz LQFP-48(7x7) Microcontrollers RoHS,YES,100,1.7631,176.31,,,
C19272176,SMXMS-04K-TR,SM Switch,,"SMD,P=1.27mm","Dip Switch 4 Position Surface Mount-8P,6.6x5.4mm 25mA 24V",YES,500,0.2335,116.75,,,
C9359,FE1.1S-BSOP28BCN,TERMINUS,,SSOP-28-150mil,4 USB Hub 480Mbps USB 2.0 SSOP-28-150mil Interface Controllers RoHS,YES,5,0.6681,3.34,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - Canonical CSV retained on task #258, SHA-256 bb971a467786ddc07fafadb2a532bcd35fe4615ba429ddb986449f30c57300e8 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-104820-4a55590a.csv] - [ ] #260 adiaz@embeddedera.com / Purchasing: Duplicate LCSC CSV — see task #247 (due 2026-10-17 OVERDUE) — Duplicate CSV removed at Angel's request after exact SHA-256 verification (51162b2ad52aa985fed20c4bd30eae3a0dfedddc8a387d07887a5727ce926317). Original preserved on task #247: https://tasks.embeddedera.com/task/247. Use only the canonical file when totaling purchases. No ERP stock or financial transaction created.

Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:48.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-103822-a3094270.csv (1 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: not found
  • Date: not found
  • Document #: not found
  • Total: not found
  • Subtotal: 411.41
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • USB-C (USB TYPE-C) Receptacle Connector 16 Position Surface Mount — qty 250 — 43.43
  • ARM Cortex-M0+ 32 Bit 64MHz LQFP-48(7x7) Microcontrollers RoHS — qty 250 — 311.68
  • Emerald Green 534nm LED Indication - Discrete 3.4V 1206 — qty 3000 — 16.2
  • Orange 605nm LED Indication - Discrete 2.3V 1206 — qty 3000 — 17.7
  • 5.23kΩ ±1% 100mW 0603 Thick Film Resistor — qty 5000 — 3.5
  • Red 620nm LED Indication - Discrete 2.4V 1206 — qty 3000 — 15.9
  • 100mW 0Ω 75V Thick Film Resistor ±400ppm/℃ ±1% 0603 Chip Resistor - Surface Mount — qty 5000 — 2.5

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C3151749,TYPE-C 16PLT-H10.0,SHOU HAN,,SMD,USB-C (USB TYPE-C) Receptacle Connector 16 Position Surface Mount,YES,250,0.1737,43.43,,,
C2847904,STM32G0B1CBT6,ST,,LQFP-48(7x7),ARM Cortex-M0+ 32 Bit 64MHz LQFP-48(7x7) Microcontrollers RoHS,YES,250,1.2467,311.68,,,
C965825,XL-3216UGC,XINGLIGHT,,1206,Emerald Green 534nm LED Indication - Discrete 3.4V 1206,YES,3000,0.0054,16.20,,,
C965823,XL-3216UOC,XINGLIGHT,,1206,Orange 605nm LED Indication - Discrete 2.3V 1206,YES,3000,0.0059,17.70,,,
C2930111,FRC0603F5231TS,FOJAN,,0603,5.23kΩ ±1% 100mW 0603 Thick Film Resistor,YES,5000,0.0007,3.50,,,
C965822,XL-3216SURC,XINGLIGHT,,1206,Red 620nm LED Indication - Discrete 2.4V 1206,YES,3000,0.0053,15.90,,,
C2906974,FRC0603F0000TS,FOJAN,,0603,"100mW 0Ω 75V Thick Film Resistor ±400ppm/℃ ±1% 0603 Chip Resistor - Surface Mount ",YES,5000,0.0005,2.50,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - Canonical CSV retained on task #247, SHA-256 51162b2ad52aa985fed20c4bd30eae3a0dfedddc8a387d07887a5727ce926317 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-103822-a3094270.csv] - [ ] #261 adiaz@embeddedera.com / Purchasing: Duplicate LCSC CSV — see task #249 (due 2026-10-17 OVERDUE) — Duplicate CSV removed at Angel's request after exact SHA-256 verification (eb1605ae07aa8eb007b805fc859d270d1eb588dc99b9c793031a845e5e6566f7). Original preserved on task #249: https://tasks.embeddedera.com/task/249. Use only the canonical file when totaling purchases. No ERP stock or financial transaction created.

Filed from the intake page by adiaz@embeddedera.com on 2026-09-17 10:48.

Original: /home/angel/.local/state/assistant/intake/2026/09/20260917-103844-2b1208d6.csv (1 kB, text/csv)


Read it (text file) — DRAFT, unverified:

  • Vendor: LCSC
  • Date: not found
  • Document #: not found
  • Total: not found
  • Subtotal: 74.85
  • Tax: not found
  • Currency: USD
  • Payment method: not found
  • Line items:
  • 64Kbit 1MHz I2C SOT-23-5 Memory RoHS — qty 500 — 25.3
  • Boost Switching Regulator IC Fixed 5V 1 Output SOT-23-5 — qty 50 — 5.26
  • 600mA 2.2uH ±20% 400mA 160mΩ Multilayer inductor 0805 Fixed Inductors RoHS — qty 100 — 4.6
  • Connector Header 2 position 1.25mm Pitch 1A Through Hole -25℃~+85℃ — qty 50 — 0.41
  • ±25% ±250ppm/℃ 150mW 10kΩ SMD-3P,3.8x3.6mm Trimmer Potentiometers RoHS — qty 150 — 12.83
  • ±10% ±250ppm/℃ 500mW 10kΩ Through Hole-3P,9.5x4.9mm Trimmer Potentiometers RoHS — qty 150 — 15.17
  • Power Relay 1 Form C: 1C (SPDT-CO) 5V Coil Through Hole,15.6x19.2mm — qty 50 — 11.28

Unverified — pulled automatically from the OCR text below. Nothing has been posted anywhere — a person must check these numbers before they go in the ERP.

What the page says

LCSC Part Number,Manufacture Part Number,Manufacturer,Customer NO.,Package,Description,RoHS,Quantity,Unit Price($),Ext.Price($),Estimated lead time (business days),Updated lead time,Date Code / Lot No.
C41408505,24C64S(XBLW),XBLW,,SOT-23-5,64Kbit 1MHz I2C SOT-23-5 Memory RoHS,YES,500,0.0506,25.30,,,
C2071163,TPS613222ADBVR,TI,,SOT-23-5,Boost Switching Regulator IC Fixed 5V 1 Output SOT-23-5,YES,50,0.1052,5.26,,,
C383404,MLZ2012M2R2HT000,TDK,,0805,600mA 2.2uH ±20% 400mA 160mΩ Multilayer inductor 0805 Fixed Inductors RoHS,YES,100,0.046,4.60,,,
C7433543,HCZZ0566-2,Hong Cheng,,"Through Hole,p=1.25mm",Connector Header 2 position 1.25mm Pitch 1A Through Hole -25℃~+85℃,YES,50,0.0081,0.41,,,
C719176,TC33X-2-103E,BOURNS,,"SMD-3P,3.8x3.6mm","±25% ±250ppm/℃ 150mW 10kΩ SMD-3P,3.8x3.6mm Trimmer Potentiometers RoHS",YES,150,0.0855,12.83,,,
C118954,3296W-1-103,BOCHEN,,"Through Hole-3P,9.5x4.9mm","±10% ±250ppm/℃ 500mW 10kΩ Through Hole-3P,9.5x4.9mm Trimmer Potentiometers RoHS",YES,150,0.1011,15.17,,,
C35449,SRD-05VDC-SL-C,Songle Relay,,"Through Hole,19.2x15.6mm","Power Relay 1 Form C: 1C (SPDT-CO) 5V Coil Through Hole,15.6x19.2mm",YES,50,0.2255,11.28,,,

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A Done comment names where this was recorded (ERP, SOP, vault, notes) - Canonical CSV retained on task #249, SHA-256 eb1605ae07aa8eb007b805fc859d270d1eb588dc99b9c793031a845e5e6566f7 [intake:/home/angel/.local/state/assistant/intake/2026/09/20260917-103844-2b1208d6.csv] - [ ] #262 adiaz@embeddedera.com / Purchasing: Email a purchase order to the supplier from the ERP (button that drafts the mail) (due 2026-10-17 OVERDUE) — Concept: from a purchase order in InvenTree, one button that drafts an email to the supplier contact with the PO PDF attached, so nobody retypes the address or the subject. The PDF now saves as PO-0001.pdf and the supplier contact (name and email) is already on the order. Reference: https://notebook.embeddedera.com/projects/erp-print-templates/

What has to be decided first: InvenTree 1.5 has no native 'email this order' action. The interface plugin system is enabled (ENABLE_PLUGINS_INTERFACE, ENABLE_PLUGINS_URL), so a small UI plugin can add the button; it needs a JS bundle, so check first whether a maintained community plugin already does it (Hard Rule 1 and 3) before writing one.

Deliverables: - Community check recorded: is there a maintained plugin for emailing orders? - A button on the purchase order page that opens a draft: to the supplier contact, subject with the PO reference, our standing text, PDF attached - Written into SOP-004 Purchase Orders as the way POs are sent

Verify: - Check by hand: PO-0001 emailed from the ERP without typing the address

Community check done 2026-09-17 (Hard Rules 1 and 3): no plugin exists. InvenTree 1.5 has email infrastructure — the inventree-email-notification plugin is installed and active, a MailMixin exists for plugins (process_mail_in/out, attachments undocumented), and there are global email settings — but nothing that emails an order to a supplier, and no community plugin doing it (docs.inventree.org mail mixin page; GitHub discussions have a Mouser panel plugin, which is the pattern to copy, but no mail one). So this has to be ours: a UI plugin with a panel button on the purchase order that opens a draft to order.contact.email with the PO reference as the subject and the PDF attached. SMTP must be configured for InvenTree first (no EMAIL_HOST set today). The contact email now prints on the PDF, so the address is already visible in the meantime. [kanboard] - [ ] #294 yrosado@embeddedera.com / Purchasing: Price: CL10B105KA8NNNC up 42% at mouser — used in EE-A-0002-A, EE-A-0004-A (due 2026-10-25 OVERDUE) — Price move for CL10B105KA8NNNC:

  • mouser: 0.0370 -> 0.0260 (down 29.7%)

Used in: assemblies EE-A-0002-A, EE-A-0004-A, EE-A-0009-A; components EE-C-0014 - digikey datasheet: //mm.digikey.com/Volume0/opasdata/d220001/medias/docus/3644/CL10B105KA8NNNC_spec.pdf

part-watch — updated 2026-10-25 04:58

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Confirm CL10B105KA8NNNC's current price at the source(s) listed above - A Done comment says what was changed and where (ERP, SOP, repo), not just "fixed" [part-watch:CL10B105KA8NNNC] - [ ] #295 yrosado@embeddedera.com / Purchasing: Price: GCJ188R71H104KA12D up 22% at mouser — used in EE-A-0002-A, EE-A-0004-A (due 2026-10-25 OVERDUE) — Price move for GCJ188R71H104KA12D:

  • mouser: 0.0460 -> 0.0560 (up 21.7%)

Used in: assemblies EE-A-0002-A, EE-A-0004-A; components EE-C-0012 - digikey datasheet: https://pim.murata.com/asset/pim4/ceramicCapacitorSMD/GCJ188R71H104KA12-02B-EN_PDF_CERAMICCAPACITORSMD - mouser datasheet: https://www.mouser.com/datasheet/3/76/2/GCJ188R71H104KA12_02B.pdf

part-watch — updated 2026-09-25 04:57

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Confirm GCJ188R71H104KA12D's current price at the source(s) listed above - A Done comment says what was changed and where (ERP, SOP, repo), not just "fixed" [part-watch:GCJ188R71H104KA12D] - [ ] #296 yrosado@embeddedera.com / Purchasing: Price: MI0603L221R-10 up 155% at digikey — used in EE-A-0002-A (due 2026-10-25 OVERDUE) — Price move for MI0603L221R-10:

  • digikey: 0.1299 -> 0.0510 (down 60.7%)

Used in: assemblies EE-A-0002-A; components EE-C-0174 - digikey datasheet: https://www.laird.com/document/datasheet/mi0603l221r-10-datasheet - mouser datasheet: https://www.mouser.com/datasheet/3/6221/1/19AEB0B33327FBF851785E5A3149BFFC8D5D0E8B927C7705F1F4BECB3348EB0B.pdf

part-watch — updated 2026-10-02 05:02

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Confirm MI0603L221R-10's current price at the source(s) listed above - A Done comment says what was changed and where (ERP, SOP, repo), not just "fixed" [part-watch:MI0603L221R-10] - [ ] #305 yrosado@embeddedera.com / Purchasing: Price: CL10A106MA8NRNC up 91% at mouser — used in EE-A-0009-A (due 2026-11-08) — Price move for CL10A106MA8NRNC:

  • mouser: 0.1210 -> 0.2310 (up 90.9%)

Used in: assemblies EE-A-0009-A; components EE-C-0206 - digikey datasheet: //mm.digikey.com/Volume0/opasdata/d220001/medias/docus/658/CL10A106MA8NRNC_Spec.pdf

part-watch — updated 2026-10-09 04:58

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Confirm CL10A106MA8NRNC's current price at the source(s) listed above - A Done comment says what was changed and where (ERP, SOP, repo), not just "fixed" [part-watch:CL10A106MA8NRNC] - [ ] #323 yrosado@embeddedera.com / Purchasing: Price: SMBJ5.0CA down 15% at mouser — used in EE-A-0009-A (due 2026-11-17) — Price move for SMBJ5.0CA:

  • mouser: 0.2350 -> 0.3200 (up 36.2%)

Used in: assemblies EE-A-0009-A; components EE-C-0203 - mouser datasheet: https://www.mouser.com/catalog/specsheets/vishay_01082019_SMBJ5.0-SMBJ188CA.pdf

part-watch — updated 2026-10-26 04:59

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Confirm SMBJ5.0CA's current price at the source(s) listed above - A Done comment says what was changed and where (ERP, SOP, repo), not just "fixed" [part-watch:SMBJ5.0CA] - [ ] #333 yrosado@embeddedera.com / Purchasing: Price: BAT54S up 85% at mouser — used in EE-A-0002-A, EE-A-0004-A (due 2026-11-24) — Price move for BAT54S:

  • mouser: 0.0610 -> 0.1130 (up 85.2%)

Used in: assemblies EE-A-0002-A, EE-A-0004-A; components EE-C-0027

part-watch — updated 2026-10-25 04:58

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Confirm BAT54S's current price at the source(s) listed above - A Done comment says what was changed and where (ERP, SOP, repo), not just "fixed" [part-watch:BAT54S] - [ ] #6 yrosado@embeddedera.com / Sales: [1. Auth] Re-authorize before the sandbox refresh token lapses, around March 2028. ./auth.sh login, one browser step. Nothing warns you when it expires. (due 2026-10-14 OVERDUE) — Re-authorize before the sandbox refresh token lapses, around March 2028. ./auth.sh login, one browser step. Nothing warns you when it expires.

Deliverables: - Authorization refresh completed via ./auth.sh login - Valid authentication token stored in sandbox environment Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A successful login session was initiated and completed through the browser step of ./auth.sh login - The sandbox refresh token has been renewed and will remain valid past March 2028 [note:ebay-store] - [ ] #7 yrosado@embeddedera.com / Sales: [2. Inventory] Enter real stock. Every cost and bin is currently blank, so the capital rollup reports nothing. (due 2026-10-14 OVERDUE) — Enter real stock. Every cost and bin is currently blank, so the capital rollup reports nothing.

Deliverables: - Stock inventory records with cost values entered - Stock inventory records with bin locations assigned - Capital rollup report showing updated asset values Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Inventory system shows cost field populated for all stock items - Inventory system shows bin field populated for all stock items - Capital rollup report displays non-zero asset totals reflecting entered costs [note:ebay-store] - [ ] #8 yrosado@embeddedera.com / Sales: [2. Inventory] Aspect cache per category, so a listing stops failing on a missing required field. aspects.sh already fetches them; store per category id. (due 2026-10-14 OVERDUE) — Aspect cache per category, so a listing stops failing on a missing required field. aspects.sh already fetches them; store per category id.

Deliverables: - Aspect cache storage mechanism organized by category ID - Modified aspects.sh script that stores fetched aspects per category - Documentation or code comments explaining the cache structure and usage - Test or verification showing that listings no longer fail on missing required fields Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The aspect cache is implemented and stored with category ID as the key - aspects.sh fetches and persists aspects to the per-category cache structure - The cache implementation is documented in code or in a README - A test case or manual verification demonstrates a listing succeeding despite a previously missing required field [note:ebay-store] - [ ] #10 yrosado@embeddedera.com / Sales: [3. Production cutover] Configure marketplace account deletion notifications on the production keyset. Blocked by the privacy policy URL. (due 2026-10-14 OVERDUE) — Configure marketplace account deletion notifications on the production keyset. Blocked by the privacy policy URL.

Deliverables: - Production keyset configuration for marketplace account deletion notifications - Privacy policy URL - Configuration deployment record Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The production keyset has marketplace account deletion notifications configured and active - The privacy policy URL is documented and accessible - A deployment record or log entry confirms the configuration was applied to production [note:ebay-store] - [ ] #11 yrosado@embeddedera.com / Sales: [3. Production cutover] Real street address in create-location.sh; it still says 123 Main Street. (due 2026-10-14 OVERDUE) — Real street address in create-location.sh; it still says 123 Main Street.

Deliverables: - Updated create-location.sh script with real street address - Verification that the placeholder '123 Main Street' has been replaced Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: file: create-location.sh contains a real street address (not '123 Main Street') - The script has been tested and runs without errors using the new address [note:ebay-store] - [ ] #12 yrosado@embeddedera.com / Sales: [3. Production cutover] At production cutover, verify USPSGroundAdvantage is live in that environment's service catalogue before trusting the env switch in create-policies.sh. Only the sandbox cat (due 2026-10-14 OVERDUE) — At production cutover, verify USPSGroundAdvantage is live in that environment's service catalogue before trusting the env switch in create-policies.sh. Only the sandbox catalogue has been checked.

Deliverables: - Production environment service catalogue verification record - USPSGroundAdvantage service live status confirmation Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A written record (in Done comment or attachment) confirming that the production environment's service catalogue was checked and USPSGroundAdvantage appears live in it - A written record (in Done comment or attachment) confirming the live status of USPSGroundAdvantage in production before create-policies.sh environment switch was trusted [note:ebay-store] - [ ] #13 yrosado@embeddedera.com / Sales: [3. Production cutover] Sandbox policy 6250043000 is a dead clone that sandbox refuses to delete. It is renamed "DO NOT USE" and set to ground so it is harmless, but do not carry it into production; (due 2026-10-14 OVERDUE) — Sandbox policy 6250043000 is a dead clone that sandbox refuses to delete. It is renamed "DO NOT USE" and set to ground so it is harmless, but do not carry it into production; recreate policies there from create-policies.sh alone.

Deliverables: - Production policy 6250043000 does not exist or has been deleted - Production policies created from create-policies.sh script - Verification record that sandbox policy 6250043000 was excluded from production cutover Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Policy 6250043000 is absent from production environment - All policies in production match those generated by create-policies.sh - Done comment documents that sandbox's dead clone policy was intentionally not carried forward [note:ebay-store] - [ ] #14 yrosado@embeddedera.com / Sales: [3. Production cutover] Recreate policies and location against the production account, and record the new ids. (due 2026-10-14 OVERDUE) — Recreate policies and location against the production account, and record the new ids.

Deliverables: - Production policies record with new IDs - Production location record with new ID - Policy and location ID mapping document Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Production account contains recreated policies with documented new IDs - Production account contains recreated location with documented new ID - A record exists mapping old IDs to new production IDs for policies and location [note:ebay-store] - [ ] #15 yrosado@embeddedera.com / Sales: [3. Production cutover] Move tokens from .env to macOS Keychain (security add-generic-password) for production. (due 2026-10-14 OVERDUE) — Move tokens from .env to macOS Keychain (security add-generic-password) for production.

Deliverables: - macOS Keychain entries for all production tokens - .env file with tokens removed or redacted - Documentation of Keychain token retrieval process - Verification that production services access tokens from Keychain Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - security find-generic-password returns all required production tokens without plaintext .env access - Check by hand: file: .env shows no unredacted production token values - Plain sentence: Documentation exists describing how to retrieve each token from Keychain and how production services are configured to use them - Plain sentence: Production deployment log or test output confirms services successfully retrieved tokens from Keychain and are operational [note:ebay-store] - [ ] #16 yrosado@embeddedera.com / Sales: [4. Features, after the store is live] Listing workflow: a photos folder plus a few fields becomes a listing, instead of hand-written JSON per item. (due 2026-10-14 OVERDUE) — Listing workflow: a photos folder plus a few fields becomes a listing, instead of hand-written JSON per item.

Deliverables: - Listing workflow system that converts a photos folder and form fields into a listing record - Documentation describing the new photos folder + fields approach versus the old hand-written JSON method - Automated test suite validating the listing creation from photos and form input - Updated store backend configuration or code supporting the new listing workflow Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A listing can be created by uploading a photos folder and filling out form fields, and the resulting listing is accessible in the store - notes-contains: projects/listing-workflow.md "photos folder" - Test suite runs and passes, confirming listings are correctly generated from photos and form fields - The store backend processes and stores listings created via the new workflow without requiring hand-written JSON files [note:ebay-store] - [ ] #17 yrosado@embeddedera.com / Sales: [4. Features, after the store is live] Image hosting. eBay requires public https image URLs. Cheapest path is probably the existing embeddedera.com WordPress media library. (due 2026-10-14 OVERDUE) — Image hosting. eBay requires public https image URLs. Cheapest path is probably the existing embeddedera.com WordPress media library.

Deliverables: - Decision document on image hosting solution for eBay integration - WordPress media library configuration for public HTTPS image URLs - eBay product listing with hosted images Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A written decision exists explaining why the embeddedera.com WordPress media library was chosen and how it meets eBay's HTTPS URL requirements - WordPress media library is configured and tested to serve images over HTTPS at public URLs - At least one eBay product listing is live with images successfully hosted via the WordPress media library [note:ebay-store] - [ ] #18 yrosado@embeddedera.com / Sales: [4. Features, after the store is live] Order pulling via the Fulfillment API, and mark-as-shipped. (due 2026-10-14 OVERDUE) — Order pulling via the Fulfillment API, and mark-as-shipped.

Deliverables: - Order pulling implementation via Fulfillment API - Mark-as-shipped functionality implementation - Integration test suite for order pulling and shipment marking - API documentation for Fulfillment API endpoints Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Code changes exist in the repository implementing order pulling via the Fulfillment API - Code changes exist implementing the mark-as-shipped feature with appropriate state transitions - Test suite runs successfully and covers both order pulling and mark-as-shipped workflows - API documentation is updated with endpoint specifications, request/response formats, and usage examples [note:ebay-store] - [ ] #19 yrosado@embeddedera.com / Sales: [4. Features, after the store is live] Price and quantity sync for live listings (bulkUpdatePriceQuantity). (due 2026-10-14 OVERDUE) — Price and quantity sync for live listings (bulkUpdatePriceQuantity).

Deliverables: - bulkUpdatePriceQuantity function implementation - Price and quantity sync logic for live listings - Integration with live listing storage/database - Test cases validating bulk price and quantity updates Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The bulkUpdatePriceQuantity function exists and is callable with listing IDs, prices, and quantities - Live listings reflect updated prices and quantities after the function executes - Bulk updates are persisted to the listing storage system - Test suite includes cases for single and multiple listing updates, validation of price/quantity constraints, and error handling [note:ebay-store] - [ ] #20 yrosado@embeddedera.com / Sales: [4. Features, after the store is live] Reporting: sales, fees, stale listings. (due 2026-10-14 OVERDUE) — Reporting: sales, fees, stale listings.

Deliverables: - Sales report dashboard or view - Fees report document or record - Stale listings report or record Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A sales reporting interface or document exists showing transaction data - A fees report exists documenting charges and costs - A stale listings report exists identifying inactive or old inventory [note:ebay-store] - [ ] #36 yrosado@embeddedera.com / Sales: 2026-09-18 or later: cancel the WordPress.com plan (site no longer served since 2026-09-11); export nothing more — all content is in the repo. (due 2026-10-14 OVERDUE) — 2026-09-18 or later: cancel the WordPress.com plan (site no longer served since 2026-09-11); export nothing more — all content is in the repo.

Deliverables: - WordPress.com plan cancellation confirmation - Record of cancellation date and method in task notes Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - WordPress.com account shows no active plan or subscription - notes-contains: 2026-09-18-wordpress-cancellation "cancelled" OR "cancellation confirmed" [note:embeddedera-site] - [ ] #37 yrosado@embeddedera.com / Sales: Search Console tidy (optional): remove the accidental URL-prefix properties /es/ and /services/; keep the Domain property. Re-check the Google snippet/favicon in ~1–2 weeks. (due 2026-10-14 OVERDUE) — Search Console tidy (optional): remove the accidental URL-prefix properties /es/ and /services/; keep the Domain property. Re-check the Google snippet/favicon in ~1–2 weeks.

Deliverables: - Search Console URL-prefix properties /es/ and /services/ removed - Domain property retained in Search Console - Scheduled follow-up check of Google snippet and favicon Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Search Console no longer shows /es/ or /services/ as separate properties - Search Console Domain property still exists and is active - Calendar reminder or task created for Google snippet/favicon re-check in 1–2 weeks [note:embeddedera-site] - [ ] #39 yrosado@embeddedera.com / Sales: Photo + video shoot scheduled Sat 2026-09-19 13:00–15:00 (calendar event on angelgdo7 carries the shot list: line, stencil printer, reflow, test station, bench, finished board, laser-cut/3D-printed pa (due 2026-10-14 OVERDUE) — Photo + video shoot scheduled Sat 2026-09-19 13:00–15:00 (calendar event on angelgdo7 carries the shot list: line, stencil printer, reflow, test station, bench, finished board, laser-cut/3D-printed parts, membrane overlay, wide shot; 3 muted video loops). Afterwards Claude places them on the Capabilities screen and the hero, replacing the Pexels stock.

Deliverables: - Photo and video files from the 2026-09-19 shoot - Capabilities screen with new media replacing stock photos - Hero section with new media in place Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Shot list items captured: line, stencil printer, reflow, test station, bench, finished board, laser-cut/3D-printed parts, membrane overlay, wide shot, and 3 muted video loops - Capabilities screen displays the new photos and videos instead of Pexels stock imagery - Hero section displays the new photos and videos instead of Pexels stock imagery [note:embeddedera-site] - [ ] #42 yrosado@embeddedera.com / Sales: Phase 2 of the site: restore src/_parked/ pages (case studies, Tools, Docs), add videos back, GLB viewer. (due 2026-10-14 OVERDUE) — Phase 2 of the site: restore src/_parked/ pages (case studies, Tools, Docs), add videos back, GLB viewer.

Deliverables: - Restored pages from src/parked/ directory (case studies, Tools, Docs) - Videos re-integrated into site pages - GLB viewer component implemented and functional - Phase 2 site changes merged and deployed _Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: file: src/_parked/ directory contents moved to active site structure with no 404 errors on case studies, Tools, and Docs pages - Videos display and play correctly on restored pages - GLB viewer component loads and renders 3D models without errors - Phase 2 changes visible on live site with all restored content accessible [note:embeddedera-site] - [ ] #43 yrosado@embeddedera.com / Sales: Tools — Pages projects for EmbeddedEra/The_Real_Cow_Flasher → flasher.embeddedera.com and The_Real_Cow_Configurator → configurator.embeddedera.com; then Cloudflare Access (email OTP allow-list (due 2026-10-14 OVERDUE) — Tools — Pages projects for EmbeddedEra/The_Real_Cow_Flasher → flasher.embeddedera.com and The_Real_Cow_Configurator → configurator.embeddedera.com; then Cloudflare Access (email OTP allow-list) for distributors; then turn off their GitHub Pages.

Deliverables: - Cloudflare Pages project for The_Real_Cow_Flasher deployed to flasher.embeddedera.com - Cloudflare Pages project for The_Real_Cow_Configurator deployed to configurator.embeddedera.com - Cloudflare Access policy with email OTP allow-list for distributor access - GitHub Pages disabled for both EmbeddedEra/The_Real_Cow_Flasher and EmbeddedEra/The_Real_Cow_Configurator repositories Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The domain flasher.embeddedera.com resolves and serves The_Real_Cow_Flasher application via Cloudflare Pages - The domain configurator.embeddedera.com resolves and serves The_Real_Cow_Configurator application via Cloudflare Pages - Cloudflare Access is configured with email OTP authentication for distributor allow-list on both domains - GitHub Pages publishing is disabled in repository settings for both The_Real_Cow_Flasher and The_Real_Cow_Configurator [note:embeddedera-site] - [ ] #44 yrosado@embeddedera.com / Sales: Docs — add Starlight at /docs (ScrewFast pattern) once there is content: product docs, firmware loading guide (FIRMWARE_LOADING.md in the flasher repo is a start). (due 2026-10-14 OVERDUE) — Docs — add Starlight at /docs (ScrewFast pattern) once there is content: product docs, firmware loading guide (FIRMWARE_LOADING.md in the flasher repo is a start).

Deliverables: - Starlight documentation site deployed at /docs - Product documentation content - Firmware loading guide adapted from FIRMWARE_LOADING.md Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: url-contains: /docs "Starlight" OR the documentation site is accessible and renders correctly at /docs - Product documentation pages exist and are published in the /docs site - Firmware loading guide is present in /docs and references or incorporates content from FIRMWARE_LOADING.md in the flasher repo [note:embeddedera-site] - [ ] #45 yrosado@embeddedera.com / Sales: 3D — export a GLB of the Universal Tester main board with kicad-cli pcb export glb, Draco-compress, drop in public/models/. (due 2026-10-14 OVERDUE) — 3D — export a GLB of the Universal Tester main board with kicad-cli pcb export glb, Draco-compress, drop in public/models/.

Deliverables: - GLB file of Universal Tester main board - Draco-compressed GLB file - Model file in public/models/ directory Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - file: public/models/universal-tester-main-board.glb - The GLB file has been processed with Draco compression - Check by hand: file: public/models/universal-tester-main-board.glb exists and is accessible in the web-served models directory [note:embeddedera-site] - [ ] #46 yrosado@embeddedera.com / Sales: Phase 2 — tesla.embeddedera.com custom domain on the tesla-key Pages project; set TESLA_DOMAIN accordingly before registering the Tesla app (or register with the pages.dev name now and re-regist (due 2026-10-14 OVERDUE) — Phase 2 — tesla.embeddedera.com custom domain on the tesla-key Pages project; set TESLA_DOMAIN accordingly before registering the Tesla app (or register with the pages.dev name now and re-register later — Tesla allows re-registration).

Deliverables: - Custom domain tesla.embeddedera.com configured on the tesla-key Pages project - Environment variable TESLA_DOMAIN set to the custom domain value - Tesla app registration completed with the custom domain Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Custom domain is active and resolves at tesla.embeddedera.com - Environment variable TESLA_DOMAIN is set in the Pages project configuration - Tesla app registration record shows the correct domain registered [note:embeddedera-site] - [ ] #47 yrosado@embeddedera.com / Sales: Phase 2 — store.embeddedera.com redirect rule → eBay store URL. (due 2026-10-14 OVERDUE) — Phase 2 — store.embeddedera.com redirect rule → eBay store URL.

Deliverables: - Redirect rule configuration for store.embeddedera.com - Documentation of the redirect mapping to eBay store URL - Verification that redirect rule is deployed and functional Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A redirect rule exists that maps store.embeddedera.com to the eBay store URL - Written documentation describing the redirect configuration, target URL, and any relevant setup details - Check by hand: url-contains: store.embeddedera.com "eBay" [note:embeddedera-site] - [ ] #48 yrosado@embeddedera.com / Sales: Phase 3 — export WordPress.com (WXR + media); note the paid plan's renewal date. (due 2026-10-14 OVERDUE) — Phase 3 — export WordPress.com (WXR + media); note the paid plan's renewal date.

Deliverables: - WordPress.com WXR export file - WordPress.com media files export - Record of paid plan renewal date Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A WXR (WordPress eXtended RSS) XML file has been downloaded from WordPress.com - Media files from WordPress.com have been downloaded and organized - The paid plan's renewal date is documented in the Done comment or attachments [note:embeddedera-site] - [ ] #50 yrosado@embeddedera.com / Sales: Phase 5 — own shop only if the eBay fee math says so; never a second inventory. (due 2026-10-14 OVERDUE) — Phase 5 — own shop only if the eBay fee math says so; never a second inventory.

Deliverables: - eBay fee analysis comparing shop ownership cost vs. per-listing fees - Decision record: shop ownership recommendation (yes/no) with financial justification - Inventory audit confirming single source of truth (no duplicate stock across channels) Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A spreadsheet or document exists showing eBay shop subscription cost, per-listing fees, and break-even analysis - A written decision (in notes, email, or task comment) states whether to own an eBay shop and cites the fee math - Confirmation that inventory is managed from one system only, with no parallel or duplicate inventory lists [note:embeddedera-site] - [ ] #60 yrosado@embeddedera.com / Sales: [Blockers — the site is wrong without these] Delete the three placeholder-*.md. Currently draft: true so they don't build, but they still ship in the repo as obvious filler. (due 2026-10-14 OVERDUE) — Delete the three placeholder-*.md. Currently draft: true so they don't build, but they still ship in the repo as obvious filler.

Deliverables: - Three placeholder markdown files removed from the repository - Git commit recording the deletion Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - No files matching placeholder-.md exist in the repository root or content directories - Git log shows a commit message referencing the deletion of placeholder files [note:portfolio-site] - [ ] #61 yrosado@embeddedera.com / Sales: [Blockers — the site is wrong without these] Fix the TAGLINE / job-title mismatch. site.ts says "Embedded systems engineer"; actual title is electrical engineer at AFEX. Either is fine, but site, (due 2026-10-14 OVERDUE) — Fix the TAGLINE / job-title mismatch.* site.ts says "Embedded systems engineer"; actual title is electrical engineer at AFEX. Either is fine, but site, LinkedIn and résumé should agree.

Deliverables: - Updated site.ts file with consistent job title - LinkedIn profile job title aligned with site - Résumé job title aligned with site and LinkedIn Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: file: /home/angel/assistant-sandbox/site.ts contains the chosen job title (either "Embedded systems engineer" or "Electrical engineer") - LinkedIn profile shows the same job title as site.ts - Résumé document shows the same job title as site.ts and LinkedIn [note:portfolio-site] - [ ] #62 yrosado@embeddedera.com / Sales: [Blockers — the site is wrong without these] Name the degree. About says "studied engineering at UPR–Mayagüez" because the level and field were never established. LinkedIn blocks scraping — needs the (due 2026-10-14 OVERDUE) — Name the degree. About says "studied engineering at UPR–Mayagüez" because the level and field were never established. LinkedIn blocks scraping — needs the answer.

Deliverables: - A written record of the degree name, level, and field of study at UPR–Mayagüez - Updated About section text with the complete degree information Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A note or document clearly states the degree name, level (e.g., Bachelor, Master), and field (e.g., Computer Engineering) - The About section on the site no longer says only "studied engineering at UPR–Mayagüez" but includes the degree level and specific field [note:portfolio-site] - [ ] #63 yrosado@embeddedera.com / Sales: [Numbers the case studies are missing] livestock-robot-controls — units shipped, field failures/RMAs since production. The "what I rejected and why" slot is deliberately empty; don't invent one. (due 2026-10-14 OVERDUE) — livestock-robot-controls — units shipped, field failures/RMAs since production. The "what I rejected and why" slot is deliberately empty; don't invent one.

Deliverables: - Case study record for livestock-robot-controls with units shipped count - Case study record for livestock-robot-controls with field failures/RMAs data - Documented decision to leave "what I rejected and why" slot empty Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The livestock-robot-controls case study contains a populated units shipped field - The livestock-robot-controls case study contains field failures/RMAs data since production - The livestock-robot-controls case study has an empty "what I rejected and why" slot with no invented content [note:portfolio-site] - [ ] #64 yrosado@embeddedera.com / Sales: [Numbers the case studies are missing] universal-tester — defects caught that a bench check would have missed. Most persuasive number available and the logs don't identify it. (due 2026-10-14 OVERDUE) — universal-tester — defects caught that a bench check would have missed. Most persuasive number available and the logs don't identify it.

Deliverables: - A count or percentage of defects caught by universal-tester that a bench check would have missed - A case study document or analysis quantifying the persuasive metric from universal-tester logs Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A human reviewer confirms the defect count/percentage is identified and documented in the Done comment or attachments - A human reviewer confirms the case study or analysis exists and contains the most persuasive available number extracted from universal-tester data [note:portfolio-site] - [ ] #65 yrosado@embeddedera.com / Sales: [Numbers the case studies are missing] boost-gauge — measured ethanol accuracy vs a known mixture. (due 2026-10-14 OVERDUE) — boost-gauge — measured ethanol accuracy vs a known mixture.

Deliverables: - Case study document with ethanol accuracy measurements for boost-gauge against known mixture - Numerical data comparing measured vs expected ethanol values - Analysis of measurement accuracy and variance Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A document file exists containing the boost-gauge case study with ethanol accuracy results - The document includes specific numerical measurements and known mixture reference values - The document presents accuracy analysis or conclusions about measurement performance [note:portfolio-site] - [ ] #66 yrosado@embeddedera.com / Sales: [Numbers the case studies are missing] cricket — confirm the ~4× piezo swing claim (doubler × antiphase PWM). (due 2026-10-14 OVERDUE) — cricket — confirm the ~4× piezo swing claim (doubler × antiphase PWM).

Deliverables: - Test report confirming the ~4× piezo swing claim with doubler and antiphase PWM - Measurement data or waveform plots showing piezo voltage swing results - Case study document or record documenting the piezo swing verification Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A written test report exists that confirms or documents the ~4× piezo swing measurement with doubler and antiphase PWM circuit - Measurement data files, oscilloscope captures, or waveform plots exist showing the piezo voltage swing test results - A case study entry or document exists in the project records that describes the piezo swing verification findings [note:portfolio-site] - [ ] #67 yrosado@embeddedera.com / Sales: [Part lifecycle checker — evaluate before building] KiCost — https://github.com/hildogjr/KiCost (fork: INTI-CMNB/KiCost, pip install kicost, MIT). Already reads a KiCad BOM and queries Digi-Key, Mou (due 2026-10-14 OVERDUE) — KiCost — https://github.com/hildogjr/KiCost (fork: INTI-CMNB/KiCost, pip install kicost, MIT). Already reads a KiCad BOM and queries Digi-Key, Mouser, Arrow, Newark/Farnell, RS and TME. Built for pricing and stock, so the question is whether it already surfaces lifecycle/NRND or whether that's the gap worth filling. If it does, the project shrinks to a thin check over KiCost.

Now a sub-item of task 101: evaluate KiCost before writing more of our own — the watch should reuse it if it already does the job.

Deliverables: - KiCost lifecycle feature evaluation report - Decision record on whether to use KiCost or build custom solution Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A written summary exists documenting which lifecycle/NRND information KiCost currently surfaces from Digi-Key, Mouser, Arrow, Newark/Farnell, RS, and TME - A decision document exists stating whether to adopt KiCost as-is, adopt with modifications, or build a custom part lifecycle checker [note:portfolio-site] - [ ] #70 yrosado@embeddedera.com / Sales: [Going live] Flip repo to public. (due 2026-10-14 OVERDUE) — Flip repo to public.

Deliverables: - Repository visibility setting changed to public - Confirmation record of public repository status Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Repository settings show public visibility status - Done comment includes confirmation that repository is now publicly accessible [note:portfolio-site] - [ ] #71 yrosado@embeddedera.com / Sales: [Going live] Settings → Pages → build from GitHub Actions. (due 2026-10-14 OVERDUE) — Settings → Pages → build from GitHub Actions.

Deliverables: - GitHub Pages build configuration updated to use GitHub Actions - Settings → Pages section configured with GitHub Actions as build source - Live deployment from GitHub Actions to GitHub Pages Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - GitHub repository Settings → Pages displays GitHub Actions as the selected build source - GitHub Actions workflow file exists and is configured to deploy to Pages - Live site is accessible and serving content built by GitHub Actions workflow [note:portfolio-site] - [ ] #72 yrosado@embeddedera.com / Sales: [Going live] Uncomment the two push: lines in .github/workflows/deploy.yml. (due 2026-10-14 OVERDUE) — Uncomment the two push: lines in .github/workflows/deploy.yml.

Deliverables: - The two push: lines in .github/workflows/deploy.yml uncommented and committed on main - One deploy run triggered by a push, visible in GitHub Actions Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The Done comment links the Actions run that deployed from a push [note:portfolio-site] - [ ] #73 yrosado@embeddedera.com / Sales: [Going live] Delete publish.sh — obsolete and now dangerous. It does rm -rf .git (would destroy history) and creates a public repo. Replace with a README line. (due 2026-10-14 OVERDUE) — Delete publish.sh — obsolete and now dangerous. It does rm -rf .git (would destroy history) and creates a public repo. Replace with a README line.

Deliverables: - publish.sh file deleted from repository - README updated with replacement guidance for publishing workflow Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: file: publish.sh does not exist in git repository - README contains a line describing the safe publishing workflow [note:portfolio-site] - [ ] #74 yrosado@embeddedera.com / Sales: [Going live] Final sweep of dist/ for client name, product name, founder names, repo names, TODO. Strings to grep are in CLAUDE.local.md. (due 2026-10-14 OVERDUE) — Final sweep of dist/ for client name, product name, founder names, repo names, TODO. Strings to grep are in CLAUDE.local.md.

Deliverables: - Grep results document showing all search output for strings listed in CLAUDE.local.md - List of matching instances found in dist/ directory with file paths and line numbers - Decision record on whether dist/ is clean for client release Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: notes-contains: CLAUDE.local.md grep report generated - A summary document exists showing which strings were searched and what was found in dist/ - A sign-off or decision note indicates dist/ has been reviewed and is ready for release or lists remediation required [note:portfolio-site] - [ ] #75 yrosado@embeddedera.com / Sales: [Going live] Re-run the byte-level EXIF/GPS check on public/media (script in CLAUDE.md). mdls does not count — it lies on overwritten paths. (due 2026-10-14 OVERDUE) — Re-run the byte-level EXIF/GPS check on public/media (script in CLAUDE.md). mdls does not count — it lies on overwritten paths.

Deliverables: - Byte-level EXIF/GPS check script output for public/media - Record of files checked and their EXIF/GPS metadata status - Confirmation that no EXIF/GPS data exists in public/media files Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: notes-contains: CLAUDE.md "byte-level EXIF/GPS check" and script execution completed - Task completion notes document the files scanned and results of the byte-level check - No EXIF/GPS metadata found in public/media directory per byte-level analysis (not mdls) [note:portfolio-site] - [ ] #76 yrosado@embeddedera.com / Sales: [Nice to have, not blocking] og:image — Base omits it when none is passed, so links shared to Slack, LinkedIn or iMessage render as a bare text card. (due 2026-10-14 OVERDUE) — og:image — Base omits it when none is passed, so links shared to Slack, LinkedIn or iMessage render as a bare text card.

Deliverables: - Code change to Base that adds a default og:image meta tag when none is passed - Pull request or commit with the og:image implementation - Testing evidence that links shared to Slack, LinkedIn, or iMessage now render with an image preview Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The Base codebase contains logic that sets a default og:image meta tag in the HTML head when no custom og:image is provided - A pull request or commit exists in the git history implementing this change - Manual test results or screenshot showing that shared links now display image previews instead of bare text cards [note:portfolio-site] - [ ] #77 yrosado@embeddedera.com / Sales: [Nice to have, not blocking] HTML résumé at /resume so it's readable without a download. (due 2026-10-14 OVERDUE) — HTML résumé at /resume so it's readable without a download.

Deliverables: - HTML résumé file at /resume endpoint - Routing configuration to serve résumé at /resume URL Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: url-contains: /resume "<html" - The /resume endpoint is publicly accessible and displays formatted résumé content without requiring a file download [note:portfolio-site] - [ ] #78 yrosado@embeddedera.com / Sales: [Nice to have, not blocking] Cricket schematic: exported and reviewed, held back because the title block carries a CONFIDENTIALITY NOTICE (EmbeddedEra LLC). Re-export without the stamp, or skip — the (due 2026-10-14 OVERDUE) — Cricket schematic: exported and reviewed, held back because the title block carries a CONFIDENTIALITY NOTICE (EmbeddedEra LLC). Re-export without the stamp, or skip — the 3D render carries more weight per pixel anyway.

Deliverables: - Cricket schematic PDF without confidentiality notice - Decision record on schematic delivery approach Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A PDF file of the Cricket schematic exists without the EmbeddedEra LLC confidentiality stamp in the title block - A note or comment documents whether the schematic was re-exported or skipped in favor of the 3D render [note:portfolio-site] - [ ] #107 yrosado@embeddedera.com / Sales: Create the social accounts and app credentials (due 2026-10-14 OVERDUE) —

Absorbed task 108 on 2026-09-14: duplicates task 107 (social accounts and app credentials).

Absorbed task 126 on 2026-09-14: duplicates task 107 — the LinkedIn page is the first item there.

Absorbed task 35 on 2026-09-14: duplicates task 107 — the LinkedIn page is the first item there.

Order, from the merged tasks: LinkedIn company page first (same one-paragraph description as the site and Business Profile), then the LinkedIn app credentials, then X and Instagram.

Deliverables: - LinkedIn company page - LinkedIn app credentials - X (Twitter) account and app credentials - Instagram account and app credentials Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - LinkedIn company page has been created and is accessible - LinkedIn app credentials have been generated and stored securely - X account has been created with app credentials configured - Instagram account has been created with app credentials configured [kanboard] - [ ] #112 adiaz@embeddedera.com / Sales: Google Cloud, finish on the Mac (Angel, ~10 min): three projects got created by accident (embeddedera, "My First Project" = potent-thought-508315-a2, and the one behind the Maps key, project 3216237 (due 2026-10-14 OVERDUE) — Google Cloud, finish on the Mac (Angel, ~10 min): three projects got created by accident (embeddedera, "My First Project" = potent-thought-508315-a2, and the one behind the Maps key, project 321623712484). Pick ONE (the one with the APIs enabled), and in it: (a) Credentials → API key claude-plex, "Don't restrict key" → send via set-creds --file ~/.config/google/env as GOOGLE_API_KEY=; (b) IAM → Service account claude-plex (no roles) → Keys → JSON → scp ~/Downloads/*.json angel@192.168.5.15:.config/google/claude-plex-sa.json; (c) make sure PageSpeed Insights, YouTube Data v3, Custom Search, Sheets, Drive, Search Console, Calendar, Gmail, Business Profile APIs are enabled there; (d) tell Claude the project name. Keys on file now: GOOGLE_API_KEY (project 255579551887, restricted — blocked), GOOGLE_MAPS_API_KEY (project 321623712484, Places = metered, card on file). Set a Google Cloud billing budget alert too.

Absorbed task 127 on 2026-09-14: duplicates task 112 (Google Cloud one-project cleanup).

Deliverables: - API key claude-plex configured in ~/.config/google/env as GOOGLE_API_KEY - Service account claude-plex JSON key file at ~/.config/google/claude-plex-sa.json on the Mac - Google Cloud project with PageSpeed Insights, YouTube Data v3, Custom Search, Sheets, Drive, Search Console, Calendar, Gmail, and Business Profile APIs enabled - Google Cloud billing budget alert configured - Claude informed of the selected project name Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: file: ~/.config/google/env contains GOOGLE_API_KEY with the claude-plex key value - Check by hand: file: ~/.config/google/claude-plex-sa.json exists and contains valid service account JSON - The chosen Google Cloud project has all eight required APIs (PageSpeed Insights, YouTube Data v3, Custom Search, Sheets, Drive, Search Console, Calendar, Gmail, Business Profile) shown as enabled in the APIs & Services console - A billing budget alert has been created and is visible in the Google Cloud Console under Billing > Budgets & alerts - Done comment or attachment confirms Claude has been notified of the selected project name [note:embeddedera-site] - [ ] #113 adiaz@embeddedera.com / Sales: Confirmation email to the person who submitted a form (Angel asked 2026-09-11): Web3Forms only does this on its paid plan. Free route that also fixes the numbering: a Cloudflare Pages Function (funct (due 2026-10-14 **OVERDUE**) — Confirmation email to the person who submitted a form (Angel asked 2026-09-11): Web3Forms only does this on its paid plan. Free route that also fixes the numbering: a Cloudflare Pages Function (functions/api/submit.ts) that validates the captcha, assigns the next sequential ID from a D1 table, stores the record, emails Angel and sends the submitter a confirmation via Resend (free 3k/month, API key; needssend.embeddedera.comDNS records — token already has DNS edit). NeedsD1 Edit(and Workers KV/Functions) permission on theclaude-plex` token — Angel adds it when ready. Until then: on-screen confirmation only.

Deliverables: - Cloudflare Pages Function at functions/api/submit.ts that validates captcha, assigns sequential ID from D1, and stores form submission - D1 database table with sequential ID counter for form submissions - Resend API integration with send.embeddedera.com DNS records configured - Confirmation email sent to form submitter via Resend - Confirmation email sent to Angel with form submission details Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: file: functions/api/submit.ts exists and contains captcha validation, D1 ID assignment, and form storage logic - D1 table exists with sequential ID counter populated and incremented on each submission - DNS records for send.embeddedera.com are created and Resend API key is configured in environment - Submitter receives confirmation email after form submission via Resend - Angel receives form submission notification email with all captured details [note:embeddedera-site] - [ ] #115 adiaz@embeddedera.com / Sales: send the Spanish-review draft (Gmail Drafts, "¿Me ayudas a revisar el español…") to a native-speaker friend; apply the replies in src/i18n/es.ts (checklist also in docs/spanish-review.md). (due 2026-10-14 OVERDUE) — send the Spanish-review draft (Gmail Drafts, "¿Me ayudas a revisar el español…") to a native-speaker friend; apply the replies in src/i18n/es.ts (checklist also in docs/spanish-review.md).

Deliverables: - Spanish-review draft email sent to native-speaker friend - Applied corrections in src/i18n/es.ts - Checklist updated in docs/spanish-review.md Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Gmail Drafts folder no longer contains the "¿Me ayudas a revisar el español…" draft - Check by hand: file: src/i18n/es.ts contains native-speaker corrections - Check by hand: file: docs/spanish-review.md checklist marked complete with applied changes noted [note:embeddedera-site] - [ ] #116 adiaz@embeddedera.com / Sales: send the testimonial draft (Gmail Drafts, "Quick favor: one sentence…") to the robot client; fill in the name. (due 2026-10-14 OVERDUE) — send the testimonial draft (Gmail Drafts, "Quick favor: one sentence…") to the robot client; fill in the name.

Deliverables: - Testimonial email sent to the robot client with name field filled in - Gmail sent message record Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The testimonial draft from Gmail Drafts titled "Quick favor: one sentence…" has been sent to the robot client with the recipient's name inserted in the message body - A sent email appears in Gmail Sent folder with the robot client's address as recipient and the testimonial content with completed name field [note:embeddedera-site] - [ ] #117 adiaz@embeddedera.com / Sales: Engineering notes (one a month, Claude drafts from Angel's notes): topics on deck — replacing an EOL microcontroller; designing a pogo-pin test fixture; lead-free reflow profiles on a small line; brow (due 2026-10-14 OVERDUE) — Engineering notes (one a month, Claude drafts from Angel's notes): topics on deck — replacing an EOL microcontroller; designing a pogo-pin test fixture; lead-free reflow profiles on a small line; browser-based device tools (Web Serial/WebUSB); membrane overlay design checklist.

Deliverables: - Engineering notes document for September 2026 - Draft covering EOL microcontroller replacement topic - Draft covering pogo-pin test fixture design topic - Draft covering lead-free reflow profiles topic - Draft covering browser-based device tools topic Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - notes-contains: engineering-notes.md "September 2026" - notes-contains: engineering-notes.md "EOL microcontroller" - notes-contains: engineering-notes.md "pogo-pin test fixture" - notes-contains: engineering-notes.md "lead-free reflow" - notes-contains: engineering-notes.md "Web Serial" OR "WebUSB" [note:embeddedera-site] - [ ] #118 adiaz@embeddedera.com / Sales: Intake forms + instant quote (planned 2026-09-10): structured request forms on the site (one per request type: PCB design · SMT assembly · obsolete-part redesign · test fixture · general), each submis (due 2026-10-14 OVERDUE) — Intake forms + instant quote (planned 2026-09-10): structured request forms on the site (one per request type: PCB design · SMT assembly · obsolete-part redesign · test fixture · general), each submission numbered and timestamped into a record (Cloudflare Pages Function → D1 table + email via Resend or Web3Forms, all API-key services), so every inquiry is a traceable record (ISO 9001 orientation: controlled intake, unique ID, response-time metric). Phase 2: a JLCPCB-style instant estimate for SMT assembly (inputs: board size, qty, unique parts, placements, BGA/QFN, lead time) — needs Angel's pricing model (setup fee, per-placement, per-unique-part, minimums, lead-time multipliers) before it can be built.

Deliverables: - Five structured intake form templates (PCB design, SMT assembly, obsolete-part redesign, test fixture, general) deployed on the website - Cloudflare Pages Function that receives form submissions and writes them to D1 table with unique ID and timestamp - D1 database table schema storing intake records (ID, type, submission data, timestamp, contact info) - Email notification system (via Resend or Web3Forms) confirming each submission to the submitter - Angel's SMT assembly pricing model document (setup fee, per-placement, per-unique-part, minimums, lead-time multipliers) Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - All five form types are live on the website and accept submissions without errors - Each form submission creates a numbered record in D1 with a unique ID and ISO 8601 timestamp - D1 table exists with schema supporting intake type, submission payload, ID, timestamp, and contact fields - A test submission generates an email confirmation to the submitter's address within 2 minutes - Pricing model document exists and contains all required parameters (setup fee, per-placement rate, per-unique-part rate, minimum order thresholds, lead-time multiplier schedule) [note:embeddedera-site] - [ ] #119 adiaz@embeddedera.com / Sales: After cutover (Angel + Claude): Google Search Console — verify embeddedera.com (DNS TXT via the API), submit the sitemap; Google Business Profile for EmbeddedEra (Raleigh NC, "Electronics engineer / P (due 2026-10-14 OVERDUE) — After cutover (Angel + Claude): Google Search Console — verify embeddedera.com (DNS TXT via the API), submit the sitemap; Google Business Profile for EmbeddedEra (Raleigh NC, "Electronics engineer / PCB design service"), Bing Webmaster (imports from Search Console). This is what makes local searches like "PCB design Raleigh" show the business.

Deliverables: - Google Search Console verification record for embeddedera.com (DNS TXT via API) - Sitemap submitted to Google Search Console - Google Business Profile for EmbeddedEra (Raleigh NC location with service category) - Bing Webmaster Tools setup with embeddedera.com imported from Google Search Console Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - DNS TXT record for embeddedera.com verification is live and validated in Google Search Console - Sitemap appears as submitted and indexed in Google Search Console - Google Business Profile displays EmbeddedEra in Raleigh, NC with "Electronics engineer / PCB design service" category - Bing Webmaster Tools shows embeddedera.com property synced from Google Search Console [note:embeddedera-site] - [ ] #121 adiaz@embeddedera.com / Sales: industries served so far (one line for About); a real client quote for a testimonial. (due 2026-10-14 OVERDUE) — industries served so far (one line for About); a real client quote for a testimonial.

Deliverables: - One-line description of industries served for About section - Real client testimonial quote with attribution Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A concise, single-sentence summary of the industries the company serves is documented and ready for the About page - A verified client quote with client name and/or company attribution is documented and ready for use as a testimonial [note:embeddedera-site] - [ ] #122 adiaz@embeddedera.com / Sales: Standards (Angel, decided 2026-09-11 to research first): check what the shop actually meets before claiming anything — IPC-A-610 Class 2 acceptance criteria (assembly inspection), J-STD-001 (soldering (due 2026-10-14 OVERDUE) — Standards (Angel, decided 2026-09-11 to research first): check what the shop actually meets before claiming anything — IPC-A-610 Class 2 acceptance criteria (assembly inspection), J-STD-001 (soldering process), ANSI/ESD S20.20 (ESD-controlled bench: grounded mat, wrist strap, bagged parts), RoHS already true. Draft line ready in Claude's 2026-09-10 message: "Assembled and inspected to IPC-A-610 Class 2 acceptance criteria, lead-free (RoHS), on an ESD-controlled bench. Quality system in development toward ISO 9001." Add only what is true. Pricing deliberately left off the site for now (revisit after the first inquiries).

Deliverables: - Research report documenting which of IPC-A-610 Class 2, J-STD-001, ANSI/ESD S20.20, and RoHS standards the shop currently meets - Verified list of shop capabilities and compliance status (what is actually true vs. aspirational) - Updated quality claim text for the website based on verified compliance Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Research document exists with findings on each standard: IPC-A-610 Class 2 assembly inspection, J-STD-001 soldering process, ANSI/ESD S20.20 bench controls, and RoHS compliance status - Capability list clearly marks which standards are currently met, which are in progress, and which are not yet implemented - Website quality claim text reflects only verified capabilities and is ready to replace the draft line in Claude's 2026-09-10 message [note:embeddedera-site] - [ ] #123 adiaz@embeddedera.com / Sales: Parked (Angel's call, 2026-09-10): everything "Real Cow" — the Products screen (src/_parked/home-products-section.astro.txt on apple-style), the Tools page (src/_parked/pages/tools.astro on mai (due 2026-10-14 **OVERDUE**) — Parked (Angel's call, 2026-09-10): everything "Real Cow" — the Products screen (src/_parked/home-products-section.astro.txtonapple-style), the Tools page (src/_parked/pages/tools.astroonmain`), and the flasher/configurator subdomains + Access gate. Revisit when the product can be shown publicly.

Deliverables: - Parked Products screen file at src/parked/home-products-section.astro.txt on apple-style branch - Parked Tools page file at src/_parked/pages/tools.astro on main branch - Parked flasher/configurator subdomains and Access gate documentation or configuration _Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - Check by hand: file: src/_parked/home-products-section.astro.txt exists on apple-style branch - Check by hand: file: src/_parked/pages/tools.astro exists on main branch - Parked flasher/configurator subdomains and Access gate are documented or configured in the repository [note:embeddedera-site] - [ ] #133 adiaz@embeddedera.com / Sales: [Blockers — the site is wrong without these] Résumé PDF is missing. The Download button points at public/Angel-G-Diaz-Oquendo-Resume.pdf; that file does not exist, so /resume 404s on click. Use th (due 2026-10-14 OVERDUE) — Résumé PDF is missing. The Download button points at public/Angel-G-Diaz-Oquendo-Resume.pdf; that file does not exist, so /resume 404s on click. Use that exact filename or change RESUME_PDF in src/site.ts.

Deliverables: - Résumé PDF file at public/Angel-G-Diaz-Oquendo-Resume.pdf - Updated RESUME_PDF configuration in src/site.ts (if filename was changed) Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - file: public/Angel-G-Diaz-Oquendo-Resume.pdf - The /resume endpoint no longer returns 404 when the download button is clicked [note:portfolio-site] - [ ] #173 adiaz@embeddedera.com / Sales: Make engagement type a required field on the quote (due 2026-10-14 OVERDUE) — Every quote must state one of: custom development (customer owns the design on full payment) | our product under their brand (we own it, they buy units) | licensed design (we own it, they licence it). The IP clause in the terms keys off this field.\n\nWithout it, a product we funded and own could be signed away by a quote that simply did not mention ownership — the default has to be custom development, because that is least surprising to a customer, which is exactly why a silent quote is dangerous for the other two.\n\nTouches the InvenTree quote/proposal template and the website quote form. See ~/Notes/projects/terms-and-warranty.md, 'When the product is ours'.

Deliverables: - InvenTree quote/proposal template with engagement type as required field - Website quote form with engagement type as required field - Decision record documenting default engagement type and IP clause mapping Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - InvenTree template enforces engagement type selection before quote generation - Website form prevents submission without selecting one of: custom development, our product under their brand, or licensed design - Check by hand: notes-contains: projects/terms-and-warranty.md "When the product is ours" with engagement type requirements documented [kanboard] - [ ] #174 yrosado@embeddedera.com / Sales: Review the terms of sale and warranty page (due 2026-10-14 OVERDUE) — Read it as a customer would: https://embeddedera-site.pages.dev/terms/ (Spanish summary: https://embeddedera-site.pages.dev/es/terms/). Sign in with your Google account — it is the gated preview, not the public site yet.

The reasoning behind it, if you want it: https://notebook.embeddedera.com/projects/terms-and-warranty/

What to look for, from the side of the desk that talks to customers: - Is anything unclear or off-putting to a customer reading it cold? - The warranty is split by what was sold — a year on our own products, 90 days workmanship on a customer's design, 90 days to fix design work. Does that match what you would be comfortable promising on the phone? - Payment: net 30 for approved accounts, deposit for new customers and larger orders. Is that how we actually want to work? - Anything you know customers have argued about before that is missing.

Not to worry about: the legal wording in the boxed section — a lawyer reads that, not us.

Leave comments on this task, or edit the note directly. Nothing goes on the public site until Angel approves.

Deliverables: - Notes document with feedback on customer-facing clarity of terms and warranty page - Assessment of warranty terms alignment with sales team comfort level - Review of payment terms (net 30 vs. deposit policies) against actual business practice - List of missing warranty or terms provisions based on known customer disputes Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - A comment or note attachment documents what is unclear or off-putting to customers reading the terms cold - A comment or note attachment confirms whether the warranty split (1 year own products, 90 days workmanship, 90 days design fix) matches what sales is comfortable promising - A comment or note attachment confirms whether net 30 for approved accounts and deposits for new/large orders reflects actual business policy - A comment or note attachment lists any known customer pain points or disputed terms that are missing from the page [kanboard] - [ ] #182 yrosado@embeddedera.com / Sales: Business cards: locate the source file and the last order (vendor, order number, quantity, price) and fill Notes/brand/artwork/business-cards/record.yml (due 2026-10-14 OVERDUE) — The record for our business cards exists but every field is null: nothing on the server says which file they were printed from, who printed them, or what the last order was. Find the source (the design file, not a photo) and the order confirmation, and fill in record.yml at https://notebook.embeddedera.com/brand/artwork/business-cards/record/ — or attach them here with a Done comment and Administration fills the file.

See SOP-017 Task Register, Closing: 'Keeping the source, not the photo'.

Deliverables: - Business card design source file (editable format, not photo) - Order confirmation document from the last business card order - record.yml file filled with vendor, order number, quantity, and unit price Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The vendor, order number, quantity and unit price in record.yml are filled in, not null - The Done comment names the vendor and the order number - attachments>=1 [kanboard] - [ ] #220 adiaz@embeddedera.com / Sales: LinkedIn: company page + developer app, then connect it in Postiz (due 2026-09-29 OVERDUE) — The scheduler (social.embeddedera.com) posts to LinkedIn only through a LinkedIn developer app tied to the company page. Neither exists yet. Sales owns what the shop says in public (SOP-018).

What to do

  1. linkedin.com/company/setup/new — name EmbeddedEra, the standard paragraph from https://notebook.embeddedera.com/brand/ as the description, the vector logo from brand/artwork/logo, website embeddedera.com, industry Electrical/Electronic Manufacturing, Raleigh NC.
  2. linkedin.com/developers → Create app: name EmbeddedEra Social, associate it with the company page, upload the logo, agree to terms. Under Products request Share on LinkedIn and Community Management API (the latter is what posts as the page).
  3. Auth tab: add redirect URL https://social.embeddedera.com/integrations/social/linkedin-page (and /integrations/social/linkedin), copy Client ID and Client Secret, paste them to Claude.
  4. After Claude restarts the scheduler: social.embeddedera.com → Add channel → LinkedIn Page → sign in → pick the EmbeddedEra page.

Deliverables: - LinkedIn company page live - LinkedIn app Client ID/secret in the scheduler config and the credentials register - The EmbeddedEra page shows as a connected channel in Postiz

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - notes-contains: roles/credentials.yml "linkedin" - The Done comment gives the page URL and says the channel is connected [kanboard] - [ ] #221 adiaz@embeddedera.com / Sales: X: developer app (free tier) + connect @EmbeddedEra in Postiz (due 2026-09-29 OVERDUE) — Posting the X thread from the scheduler needs an X developer app with read and write. Free tier: ~1,500 posts a month, far more than we use.

What to do

  1. developer.x.com → sign up for the Free tier with the @EmbeddedEra account → create a Project and an App (name EmbeddedEra Social).
  2. User authentication settings: App permissions Read and write, Type of app Web App, Callback URL https://social.embeddedera.com/integrations/social/x, Website https://embeddedera.com.
  3. Keys and tokens: copy API Key and API Key Secret (OAuth 1.0a consumer keys — Postiz uses these), paste them to Claude.
  4. After the restart: social.embeddedera.com → Add channel → X → authorise.

Deliverables: - X app with read+write and the callback set - API key/secret in the scheduler config and the credentials register - @EmbeddedEra shows as a connected channel in Postiz

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - notes-contains: roles/credentials.yml "x-api" - The Done comment says the channel is connected [kanboard] - [ ] #223 adiaz@embeddedera.com / Sales: YouTube: enable the Data API on the Google client and connect the channel in Postiz (due 2026-09-29 OVERDUE) — The Google OAuth client created 2026-09-15 for the scheduler's login is also its YouTube client. Only the API needs enabling and the channel connecting.

What to do

  1. console.cloud.google.com → the project holding the EmbeddedEra Social client → APIs & Services → Library → YouTube Data API v3 → Enable.
  2. OAuth consent screen → Scopes: add https://www.googleapis.com/auth/youtube.upload and youtube.readonly (internal app, no review).
  3. social.embeddedera.com → Add channel → YouTube → authorise with the account that owns the EmbeddedEra channel.

Deliverables: - YouTube Data API enabled on the project - The EmbeddedEra YouTube channel shows as a connected channel in Postiz

Checked automatically by the register when this card reaches Review. Not steps for you.

Verify: - The Done comment says the channel is connected and which Google account owns it [kanboard] - [ ] #238 adiaz@embeddedera.com / Sales: Send four verified Gmail drafts and finish remaining prospect recipient checks (due 2026-09-18 OVERDUE) — Angel authorized reviewing and sending existing business drafts. Three local prospect messages and Paul’s testimonial request are corrected and ready. Unattended Claude Gmail get_message returns "The caller does not have permission"; its one-shot dispatch timer is disabled. Do not call these scheduled or sent. Remaining prospect drafts need official recipient and capability checks.

Deliverables: - Gmail SENT evidence for reviewed messages, or explicit individual hold reasons - Verified company contact sources - No placeholders, unsupported capabilities or duplicate sends

Verify: - Completion evidence distinguishes sent, queued and held per message - Recipient provenance and sent message IDs are recorded - Uncertain outcomes are not blindly retried [kanboard] - [ ] #264 adiaz@embeddedera.com / Sales: Monthly Facebook and Instagram analytics and posting-time review (due 2026-10-18 OVERDUE) — Evaluate the first month of approved company social posts using Facebook 09:00 and Instagram 18:00 America/New_York. Review on October 18, 2026; compare platform results without treating different topics as a controlled timing test. If too few posts were approved, extend the observation period.

What to do: - Collect actual post times, reach, impressions, engagement, saves, website visits and qualified inquiries; state unavailable metrics. - Separate Facebook and Instagram feeds from Stories; compare per-post results and audience-active hours if available. - Audit duplicates and missing destinations; preserve existing published posts. - Recommend keep/change times with sample size and limitations. No automatic schedule changes or publishing.

Deliverables: - Review report in Notes/projects/content-pipeline.md with metric totals, sample sizes and timing decision.

Checked automatically by the register when this card reaches Review. Not steps for you. Verify: - The review report includes the observed date range, platform-specific evidence and the owner-approved timing decision.

Recurring review configuration (2026-09-18): Sales / Angel; monthly on closure, next due date one month after the previous due date. First review remains October 18, 2026. An unfinished review remains overdue; closure creates the next task, not a calendar-only trigger. Follow SOP-018 Monthly analytics review. Use Meta Business Suite Insights for performance evidence; Postiz for delivery status only. Record unavailable metrics and sample limitations. Review reminders are automated; metric gathering and owner approval of timing changes are not. [kanboard] - [ ] #302 Sales: Fix job ee-store-prod-health — Job: ee-store-prod-health (user-timer, area sell)

What it is: Production store (dark) health: 127.0.0.1:8510 200, scheduler healthy, no failed scheduled actions, newest store dump < 26 h

Schedule: -- :00/5:00 (-- :00/5:00)

Last 3 runs: - 2026-10-07T12:30:00-04:00: ok in 1s - 2026-10-07T12:35:00-04:00: ok in 1s - 2026-10-07T12:40:00-04:00: failed rc=1 in 1s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

ok    origin 127.0.0.1:8510: HTTP 200
ok    public home: HTTP 200
ok    wp-login behind Access: 302 https://embeddedera.cloudflareaccess.com/cdn-cgi/access/login/store.embeddedera.com
ok    webhook endpoint public, not 5xx: 400
ok    scheduler: healthy
ok    failed scheduled actions: 0
ok    newest store dump: 2026-10-07_0230 is 10 h old (limit 26)
Finished ee-store-prod-health.service - Production store health check (local/dark checks).
Starting ee-store-prod-health.service - Production store health check (local/dark checks)...
FAIL  origin 127.0.0.1:8510: HTTP 502
FAIL  public home: HTTP 502
ok    wp-login behind Access: 302 https://embeddedera.cloudflareaccess.com/cdn-cgi/access/login/store.embeddedera.com
FAIL  webhook endpoint public, not 5xx: 502
ok    scheduler: healthy
ok    failed scheduled actions: 0
ok    newest store dump: 2026-10-07_0230 is 10 h old (limit 26)
ee-store-prod-health.service: Main process exited, code=exited, status=1/FAILURE
ee-store-prod-health.service: Failed with result 'exit-code'.
Failed to start ee-store-prod-health.service - Production store health check (local/dark checks).
ee-store-prod-health.service: Triggering OnFailure= dependencies.

Claude: diagnose and fix; see job detail #job/ee-store-prod-health [kanboard] - [ ] #303 Sales: Fix job story-preflight — Job: story-preflight (cron, area sell)

What it is: Daily rehearsal on the Android emulator that catches a Facebook/Instagram app auto-update before it silently blocks a Story; disables only the affected platform and alerts.

Schedule: Every day at 07:30 (30 7 * * *)

Last 3 runs: - 2026-10-06T07:30:02-04:00: ok in 314s - 2026-10-07T07:30:01-04:00: ok in 280s - 2026-10-08T07:30:01-04:00: failed rc=1 in 411s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

    "link_composed"
  ],
  "submission_attempted": false,
  "original_permissions": {
    "android.permission.READ_MEDIA_IMAGES": true,
    "android.permission.READ_MEDIA_VIDEO": true
  },
  "phase": "blocked",
  "editor_may_remain": true,
  "rendered_link_verification": "separate editor screenshot review required; sticker text absent from native hierarchy",
  "error": "Blocked: Native hierarchy unavailable",
  "draft_cleanup_verified": false,
  "permissions_restored": true,
  "finished_at": 1791459229.2293015
}
Report: /home/angel/story-publisher/runtime/meta-rehearsals/1791459050236662860-instagram/report.json

instagram: rehearsal failed, paused (/home/angel/.config/story-publish-instagram.disabled)
facebook: ok (version 580.0.0.51.74 unchanged)
=== 2026-10-08T07:36:52-04:00 end rc=1 in 411s ===

Claude: diagnose and fix; see job detail #job/story-preflight [kanboard] - [ ] #306 Sales: Fix job content-buffer-fill — Job: content-buffer-fill (cron, area sell)

What it is: Hourly check that seven future notes are ready; only when short, researches and drafts up to three engineering notes onto the dev preview.

Schedule: Every hour at :07 (7 * * * *)

Last 3 runs: - 2026-10-09T22:07:01-04:00: ok in 3s - 2026-10-09T23:07:01-04:00: ok in 2s - 2026-10-10T00:07:01-04:00: failed rc=1 in 133s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

=== 2026-10-09T15:07:01-04:00 start: /usr/bin/timeout --signal=TERM --kill-after=30s 45m /home/angel/.local/bin/content-buffer-fill ===
=== 2026-10-09T15:07:04-04:00 end rc=0 in 3s ===
=== 2026-10-09T16:07:01-04:00 start: /usr/bin/timeout --signal=TERM --kill-after=30s 45m /home/angel/.local/bin/content-buffer-fill ===
=== 2026-10-09T16:07:03-04:00 end rc=0 in 2s ===
=== 2026-10-09T17:07:01-04:00 start: /usr/bin/timeout --signal=TERM --kill-after=30s 45m /home/angel/.local/bin/content-buffer-fill ===
=== 2026-10-09T17:07:04-04:00 end rc=0 in 3s ===
=== 2026-10-09T18:07:01-04:00 start: /usr/bin/timeout --signal=TERM --kill-after=30s 45m /home/angel/.local/bin/content-buffer-fill ===
=== 2026-10-09T18:07:03-04:00 end rc=0 in 2s ===
=== 2026-10-09T19:07:01-04:00 start: /usr/bin/timeout --signal=TERM --kill-after=30s 45m /home/angel/.local/bin/content-buffer-fill ===
=== 2026-10-09T19:07:04-04:00 end rc=0 in 3s ===
=== 2026-10-09T20:07:01-04:00 start: /usr/bin/timeout --signal=TERM --kill-after=30s 45m /home/angel/.local/bin/content-buffer-fill ===
=== 2026-10-09T20:07:04-04:00 end rc=0 in 3s ===
=== 2026-10-09T21:07:01-04:00 start: /usr/bin/timeout --signal=TERM --kill-after=30s 45m /home/angel/.local/bin/content-buffer-fill ===
=== 2026-10-09T21:07:04-04:00 end rc=0 in 3s ===
=== 2026-10-09T22:07:01-04:00 start: /usr/bin/timeout --signal=TERM --kill-after=30s 45m /home/angel/.local/bin/content-buffer-fill ===
=== 2026-10-09T22:07:04-04:00 end rc=0 in 3s ===
=== 2026-10-09T23:07:01-04:00 start: /usr/bin/timeout --signal=TERM --kill-after=30s 45m /home/angel/.local/bin/content-buffer-fill ===
=== 2026-10-09T23:07:03-04:00 end rc=0 in 2s ===
=== 2026-10-10T00:07:01-04:00 start: /usr/bin/timeout --signal=TERM --kill-after=30s 45m /home/angel/.local/bin/content-buffer-fill ===
=== 2026-10-10T00:09:14-04:00 end rc=1 in 133s ===

Claude: diagnose and fix; see job detail #job/content-buffer-fill [kanboard] - [ ] #319 Sales: Fix job quote-drafts — Job: quote-drafts (cron, area sell)

What it is: Every 30 minutes on weekdays finds new [EE-] request emails and writes one reply draft each (plus at most one nudge and one close-out); can never send.

Schedule: Every 30 minutes between 07:00 and 19:59, on weekdays (*/30 7-19 * * 1-5)

Last 3 runs: - 2026-10-16T07:30:01-04:00: ok in 32s - 2026-10-16T08:00:01-04:00: ok in 44s - 2026-10-16T08:30:01-04:00: failed rc=1 in 6s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

=== 2026-10-15T17:00:01-04:00 start: /home/angel/.local/bin/quote-drafts ===
=== 2026-10-15T17:00:16-04:00 end rc=0 in 15s ===
=== 2026-10-15T17:30:01-04:00 start: /home/angel/.local/bin/quote-drafts ===
=== 2026-10-15T17:30:14-04:00 end rc=0 in 13s ===
=== 2026-10-15T18:00:01-04:00 start: /home/angel/.local/bin/quote-drafts ===
=== 2026-10-15T18:00:17-04:00 end rc=0 in 16s ===
=== 2026-10-15T18:30:01-04:00 start: /home/angel/.local/bin/quote-drafts ===
=== 2026-10-15T18:30:15-04:00 end rc=0 in 14s ===
=== 2026-10-15T19:00:01-04:00 start: /home/angel/.local/bin/quote-drafts ===
=== 2026-10-15T19:00:21-04:00 end rc=0 in 20s ===
=== 2026-10-15T19:30:01-04:00 start: /home/angel/.local/bin/quote-drafts ===
=== 2026-10-15T19:30:14-04:00 end rc=0 in 13s ===
=== 2026-10-16T07:00:01-04:00 start: /home/angel/.local/bin/quote-drafts ===
=== 2026-10-16T07:00:40-04:00 end rc=0 in 39s ===
=== 2026-10-16T07:30:01-04:00 start: /home/angel/.local/bin/quote-drafts ===
=== 2026-10-16T07:30:33-04:00 end rc=0 in 32s ===
=== 2026-10-16T08:00:01-04:00 start: /home/angel/.local/bin/quote-drafts ===
=== 2026-10-16T08:00:45-04:00 end rc=0 in 44s ===
=== 2026-10-16T08:30:01-04:00 start: /home/angel/.local/bin/quote-drafts ===
=== 2026-10-16T08:30:07-04:00 end rc=1 in 6s ===

Claude: diagnose and fix; see job detail #job/quote-drafts [kanboard] - [ ] #330 Sales: Fix job content-reconcile — Job: content-reconcile (cron, area sell)

What it is: content-reconcile: website content OUTCOME check (>=4 consecutive queued days else page; no new queued note in 26 h while reserve <7 = stall; today's note liv

Schedule: Every hour at :52 (52 * * * *)

Last 3 runs: - 2026-10-24T00:52:01-04:00: failed rc=1 in 0s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

=== 2026-10-24T00:52:01-04:00 start: /home/angel/.local/bin/content-reconcile ===
reserve: fail: no note queued in 137h while reserve is 1; 6 unqueued drafts; prepare 0h ago: independent review failed for these exact bytes; edit the draft to retry
today_live: ok: not checked before 09:00 ET
dates: ok: 12 live note dates match RSS
ERROR: reserve: no note queued in 137h while reserve is 1; 6 unqueued drafts; prepare 0h ago: independent review failed for these exact bytes; edit the draft to retry
=== 2026-10-24T00:52:01-04:00 end rc=1 in 0s ===

Claude: diagnose and fix; see job detail #job/content-reconcile [kanboard] - [ ] #331 Sales: Fix job content-daily-prepare — Job: content-daily-prepare (cron, area sell)

What it is: Builds the full package (note, feed captions, artwork, Story) for the next seven days, has it independently reviewed, and approves it under the machine identity. Never publishes.

Schedule: Every hour at :37 (37 * * * *)

Last 3 runs: - 2026-10-24T01:37:01-04:00: ok in 58s - 2026-10-24T02:37:01-04:00: ok in 188s - 2026-10-24T03:37:01-04:00: failed rc=1 in 608s

What went wrong: (nothing error-like in the log)

Log tail (secrets masked):

      "ready": false,
      "blockers": []
    },
    {
      "date": "2026-10-30",
      "package_id": null,
      "ready": false,
      "blockers": []
    },
    {
      "date": "2026-10-31",
      "package_id": null,
      "ready": false,
      "blockers": []
    }
  ]
}
tick state=ok errors=1 rc=1
daily_prepare exited 1
=== 2026-10-24T03:47:09-04:00 end rc=1 in 608s ===

Claude: diagnose and fix; see job detail #job/content-daily-prepare [kanboard]

Recently closed

  • #318 Version matches revision history — 1 failing [SOP-000.version-matches-history] — closed 2026-10-26 (no reason given)
  • #336 Storage filling up: root / — closed 2026-10-25 (no reason given)
  • #337 Storage filling up: rescue stick — closed 2026-10-25 (no reason given)
  • #335 Storage filling up: R2 account — closed 2026-10-25 (no reason given)
  • #307 Fix job offsite-backup — closed 2026-10-25 (no reason given)
  • #329 Fix job notebook-publish — closed 2026-10-23 (no reason given)
  • #325 Canaries fresh and passing — 1 failing [SOP-010.canary-stale-or-failing] — closed 2026-10-19 (no reason given)
  • #289 Robot Cow 7/7 — build, test and complete all 27 units in BO-0001 — closed 2026-10-19 (no reason given)
  • #315 Fix job content-daily-prepare — closed 2026-10-18 (no reason given)
  • #313 Fix job assistant-test — closed 2026-10-18 (no reason given)
  • #308 Fix job story-publish-due — closed 2026-10-18 (no reason given)
  • #309 Fix job content-approve-missing — closed 2026-10-18 (no reason given)
  • #320 Fix job social-insights — closed 2026-10-18 (no reason given)
  • #321 Fix job pod-coach — closed 2026-10-18 (no reason given)
  • #300 Version matches revision history — 1 failing [SOP-000.version-matches-history] — closed 2026-10-15 (no reason given)
  • #301 Updated date matches revision history — 1 failing [SOP-000.updated-matches-history] — closed 2026-10-15 (no reason given)
  • #314 Canaries fresh and passing — 1 failing [SOP-010.canary-stale-or-failing] — closed 2026-10-14 (no reason given)
  • #297 Canaries fresh and passing — 1 failing [SOP-010.canary-stale-or-failing] — closed 2026-10-04 (no reason given)
  • #281 Version matches revision history — 1 failing [SOP-000.version-matches-history] — closed 2026-09-29 (no reason given)
  • #291 Stock items have a location — 52 failing [SOP-003.no-location] — closed 2026-09-29 (no reason given)
  • #290 Description quality — 1 failing [SOP-002.description-quality] — closed 2026-09-25 (no reason given)
  • #292 Canaries fresh and passing — 1 failing [SOP-010.canary-stale-or-failing] — closed 2026-09-23 (no reason given)
  • #282 No personal names in SOP body — 1 failing [SOP-000.no-names-in-body] — closed 2026-09-21 (no reason given)
  • #287 Robot Cow 5/7 — record approximately 500 mL of conformal coating in stock — closed 2026-09-20 (no reason given)
  • #265 Canaries fresh and passing — 1 failing [SOP-010.canary-stale-or-failing] — closed 2026-09-20 (no reason given)
  • #84 Decide: does the sandbox get its own Kanboard? — closed 2026-09-18 (no reason given)
  • #101 Build the lifecycle and price watch — closed 2026-09-18 (no reason given)
  • #218 Post analytics review scheduler and recommendation in place — closed 2026-09-18 (no reason given)
  • #148 Build the engineering portal over the KiCad projects — closed 2026-09-18 (no reason given)
  • #169 Add the two SOP-018 audit checks — closed 2026-09-18 (no reason given)
  • #147 ESP32-C6-LCD-1.47 points at a footprint library nobody else has — closed 2026-09-18 (no reason given)
  • #59 18 — Measure qBittorrent share limits and keep Arr deletion safety disabled — closed 2026-09-18 (no reason given)
  • #56 16B — dedupe, scheduled maint-dedupe 2026-09-11 08:00, auto-links on a clean scan. 20 pairs / 140 GiB. — closed 2026-09-18 (no reason given)
  • #125 Resend API key (free tier, 3,000/mo, 100/day) for Listmonk SMTP, plus the DNS records on embeddedera.com it needs (Claude can add those with the existing Cloudflare token once the key exists). Fallbac — closed 2026-09-18 (no reason given)
  • #222 Meta: Business app for Instagram embedded_era + the Facebook page, connect both in Postiz — closed 2026-09-18 (no reason given)
  • #244 Updated date matches revision history — 1 failing [SOP-000.updated-matches-history] — closed 2026-09-18 (no reason given)
  • #245 Listed in index — 2 failing [SOP-000.listed-in-index] — closed 2026-09-18 (no reason given)
  • #163 Make the expense record append-only — closed 2026-09-18 (no reason given)
  • #176 Schedule a cold-read audit every quarter — closed 2026-09-18 (no reason given)
  • #1 Fill Description/Datasheet/Manufacturer from the Mouser cache for symbols that have an MPN (scripting/lifecycle_scan.py cache → new fill_from_cache.py). — closed 2026-09-18 (no reason given)
  • #4 Library data error: 1206_1%_e24_e96_Panasonic:R_1206_6.04k_1% carries MPN RC1206JR-07330RL (a 330R 5% part). Check the whole Panasonic 1206 lib for copy-paste MPNs. — closed 2026-09-18 (no reason given)
  • #236 Refresh AI usage and control Codex reset credits from Home — closed 2026-09-18 (no reason given)
  • #146 Description quality — 5 failing [SOP-002.description-quality] — closed 2026-09-17 (no reason given)
  • #237 Prepare verified CPA records baseline and handoff questions — closed 2026-09-17 (no reason given)
  • #235 Publish AI allowance collector and usage card on Home — closed 2026-09-16 (no reason given)
  • #214 Updated date matches revision history — 2 failing [SOP-000.updated-matches-history] — closed 2026-09-16 (no reason given)
  • #181 Close-out step 5: bounces in tasks-metrics + 'in Review > 2 days' and 'bounced this month' on the Tasks dashboard; audit check SOP-017.closed-unverified — closed 2026-09-15 (no reason given)
  • #111 Social media auto-posting (Angel, 2026-09-11): pick a free scheduler with an API — candidates: Postiz (open source, self-hostable on the Plex box, API key), n8n on the box driving the platform APIs di — closed 2026-09-15 (no reason given)
  • #219 GitHub: fine-grained token (contents:read on EmbeddedEra/KiCad) as KICAD_LIB_TOKEN for product repos, and delete zz-template-smoke — closed 2026-09-15 (no reason given)
  • #151 Build the Project_Template repo — closed 2026-09-15 (no reason given)