Project progress
| Document version | Date | Summary |
|---|---|---|
| v1 | 2026-07-18 | Initial progress record |
| v2 | 2026-07-20 | Record completion of E08 architecture planning |
| v3 | 2026-07-24 | Archive the completed v0.2.0 progress and clear the active table |
| v4 | 2026-07-27 | Record completed v0.3.0 work through E20 |
| v5 | 2026-07-27 | Refine E20 around the T-Display family and selectable board variants |
| v6 | 2026-07-28 | Record E21 component selection and desktop reader isolation |
| v7 | 2026-07-28 | Record E21 completion after the embedded and probe coverage boundaries |
| v8 | 2026-07-28 | Record E22 completion after the greet presentation rule |
| v9 | 2026-07-28 | Record compact documentation portal route titles |
This append-only table records completed project tasks. Add one concise row after a task satisfies its acceptance criteria. Do not record incomplete work as progress.
Completed v0.1.0 progress is archived in release v0.1.0.
Completed v0.2.0 progress is archived in release v0.2.0.
The table below records work from v0.3.0 onwards.
| Date | PBI or task | Outcome | Verification | Notes |
|---|---|---|---|---|
| 2026-07-27 | E18, PBI-066, PBI-067, PBI-068 | Defined, implemented, tested, and documented the root project command for build, test, desktop run, strict verify, clean, dry-run, registry selection, and all compositions | ./pet.py test all passed from clean state with 10 desktop-sdl and 7 headless tests. ./pet.py verify all passed the strict gate over both compositions under GCC, Clang, ASan, and UBSan, including 32 project command tests, Cppcheck, Clang-Tidy, symbols, boundaries, assets, and 19 desktop and 14 headless public headers | Added pet.py and DEVELOPMENT.md, refreshed the README, moved verification policy to config/, retained root Clang and CMake discovery files, recorded explicit unverified Windows TODOs, and deferred board selection to PBI-074 and PBI-075 |
| 2026-07-27 | E19, PBI-069, PBI-070, PBI-071, PBI-072 | Accepted ADR-008, added project-owned cmocka and SDL source overrides, documented CLI and user preset workflows, and closed LIM-005 | Local checkout builds passed 7 headless and 10 desktop SDL tests. ./pet.py verify all passed the pinned-default strict gate over both compositions, including 7 dependency override tests and the existing diagnostic and Core boundaries | Pinned fetch remains the default. Package managers, arbitrary layouts, and offline-first configuration without prepared checkouts remain out of scope |
| 2026-07-27 | E20, PBI-073, PBI-074, PBI-075, PBI-076 | Added the reusable firmware app, non-touch T-Display S3 board contract, and minimal ESP-IDF esp32s3 build, then narrowed LIM-012 to hardware runtime evidence | ESP-IDF v6.0.2 with Xtensa GCC 15.2.0 produced the 0x23cb0-byte firmware image; Core and firmware compile lines stayed C99 and SDK-free. ./pet.py verify all passed both hosted compositions under GCC, Clang, ASan, and UBSan with 10 desktop and 7 headless tests, 64 Cppcheck sources, 6 boundaries over 78 files, and 21 desktop and 16 headless public headers | The build is cross-compile evidence only; the board was not flashed or run, and display, buttons, PSRAM, and other hardware facilities remain unverified |
| 2026-07-27 | E20 board-family refinement, PBI-074, PBI-075 | Established boards/t_display as the stable family boundary, added explicit variant selection, and kept s3 as the only implemented variant and release claim | The selector tests accepted s3, derived ESP-IDF target esp32s3, and rejected undeclared classic; ESP-IDF v6.0.2 rebuilt the 0x23cb0-byte image. ./pet.py verify all passed both hosted compositions under GCC, Clang, ASan, and UBSan with 10 desktop and 7 headless tests, 64 Cppcheck sources, 6 boundaries over 79 files, and 22 desktop and 17 headless public headers | ADR-009 and the active release documents describe the family-and-variant decision directly. Classic T-Display remains unimplemented and unverified |
| 2026-07-28 | E21, PBI-077, PBI-078 | Selected all four frontend-neutral components for embedded build evidence, isolated the desktop asset reader behind PET_ASSETS_STDIO_READER, accepted ADR-010 for shared build interface reuse, and recorded LIM-013 | ESP-IDF v6.0.2 compiled and archived pet_manifest, pet_assets, pet_presentation, and pet_layout for esp32s3 and relinked the 0x23cb0-byte image; the embedded compile database showed every project translation unit at C99 with -Werror and no SDK include, and no reader_stdio.c entry. ./pet.py verify all passed both hosted compositions under GCC, Clang, ASan, and UBSan with 10 desktop and 7 headless tests | The components are compiled and archived, not executed. No embedded asset storage or reader exists, which LIM-013 records |
| 2026-07-28 | E21, PBI-079, PBI-080 | Added component, filesystem, network, and display include boundaries, an embedded compile database boundary that reports unavailable evidence rather than passing, and an allocation probe coverage check, then narrowed LIM-003 to probe depth | python3 tools/verify/boundaries.py: 12 boundaries held over 209 source files. python3 tools/verify/embedded.py: 11 project sources held the embedded boundary, and an absent build reported unavailable and failed under --require. python3 tools/verify/probe.py: 9 public Core operations exercised, with stale and unknown exclusions rejected. 36 gate tests and 105 verification tests passed, and ./pet.py verify all passed both compositions under GCC, Clang, ASan, and UBSan | The embedded boundary reads the compile database the ESP-IDF build wrote, so it is only as current as the last idf.py build. The probe check compares names rather than depth |
| 2026-07-28 | E22, PBI-081, PBI-082 | Decided the greet presentation rule in ADR-011, shortened PET_HAPPY_FOR_MS to 10000 against an unchanged 30000 attentive dwell, and closed LIM-010 | A Core test now asserts that the happy dwell ends before the attentive one, a presentation test drives a greeted world and reads the activity_attentive role, and the headless scenario shows the expression settling while the pet is still attentive. ./pet.py verify all passed both compositions under GCC, Clang, ASan, and UBSan with 10 desktop and 7 headless tests | The role priority is unchanged, so an expression still answers ahead of an activity. A greet now reads as a briefer happy reaction than in v0.2.0 |
| 2026-07-28 | Documentation portal landing page | Added the repository-owned Pet landing page with catalogue metadata and published it through Quartz Server Sync | The landing checks and complete Quartz Server Sync gate passed. Server release 20260728-190557-851180533-pet emitted 152 files, and the Pet landing, spec, and four tag URLs returned HTTP 200 | The full Pet product gate was not run because no product code, build, test, or platform contract changed |
| 2026-07-28 | Documentation publication metadata | Added explicit title, content-type tags, and public draft state to all 55 Pet Markdown documents, with an H1 title fallback in QSS | Local and server QSS gates passed, a real build filtered draft: true, and public checks matched all 55 titles, all tag sets, and 15 tag pages | Descriptions remain curated. The Pet product gate was not run because no product source or build contract changed |
| 2026-07-28 | Portal navigation titles | Standardised all 55 Pet metadata titles as lower-case labels no longer than 40 characters while preserving full authored headings | The title migration resolved every file, and the QSS gate passed 14 lifecycle, 9 adapter, and 4 portal index tests | The full Pet product gate was not run because no product source or build contract changed |
| 2026-07-28 | Documentation route titles | Aligned all 55 Pet navigation labels with compact file and directory routes, with ADR labels limited to a number and two topic terms | The migration was idempotent; metadata and expected-title validation passed for all 55 files; comparison with the pre-change archive proved that content outside title lines was unchanged | Full authored headings remain unchanged, and the H1 fallback remains available for future pages without an authored title |