# Issue #807 — GLPI list wrappers accept HTTP 206 - **Branch:** `fix/807-glpi-206` - **Task:** Gitea issue #807 - **Role:** Author-only worker reporting to `mosaic-100`; no self-review or merge - **Started:** 2026-07-16 ## Objective Fix the shipped GLPI ticket, computer, and user list wrappers so ranged responses with HTTP 206 Partial Content render successfully while genuine HTTP failures remain non-zero errors. ## Scope - Modify only the three affected list wrappers and a focused shell regression test. - Do not touch `session-init.sh`, `ticket-create.sh`, or `docs/TASKS.md`. - Add task-local delivery evidence here as required by the mission protocol. ## Plan 1. Add a deterministic shell harness that copies each wrapper beside stubbed `session-init.sh`, credentials, and `curl` boundaries. 2. Prove RED against the current 200-only gates: 206 must fail before the implementation change. 3. Update all three status gates to accept exactly 200 or 206. 4. Prove GREEN for 206 rendering and genuine 401/500 failures, then run repository quality gates. 5. Commit with co-author attribution, run the push queue guard, push, and open a PR for independent review and merge by the team lead. ## Budget - No explicit token cap supplied. - Soft estimate: 8K tokens; narrow single-worker execution with no exploratory scope. ## Progress - [x] Mission, task, PRD, QA, documentation, and code-review guidance loaded. - [x] RED regression evidence captured: `test-list-http-status.sh` exited 1; all three wrappers rejected 206 while retaining 401 failures. - [x] Implementation complete. - [x] Relevant tests and repository gates green. - [ ] Commit pushed and PR opened. ## Tests and evidence - RED (before source fix): `packages/mosaic/framework/tools/glpi/test-list-http-status.sh` → exit 1; ticket/computer/user 206 assertions failed, all 401 assertions passed. - GREEN: `bash -n packages/mosaic/framework/tools/glpi/{ticket-list.sh,computer-list.sh,user-list.sh,test-list-http-status.sh}` → pass. - GREEN: `shellcheck packages/mosaic/framework/tools/glpi/test-list-http-status.sh` → pass. - GREEN: `packages/mosaic/framework/tools/glpi/test-list-http-status.sh` → 6 assertions pass (206 renders and 401 errors for all three wrappers). - GREEN: `pnpm typecheck` → 42/42 tasks pass. - GREEN: `pnpm lint` → 23/23 tasks pass. - GREEN: `pnpm format:check` → all matched files pass. - Setup note: initial gate attempts could not start because the fresh worktree lacked dependencies; `pnpm install --frozen-lockfile --store-dir /home/hermes/.local/share/pnpm/store` restored the locked workspace dependencies without lockfile changes. ## Acceptance criteria mapping | Criterion | Evidence | | --- | --- | | HTTP 206 succeeds and renders each ranged list | Focused test's three 206 render assertions pass | | Genuine HTTP failures remain non-zero with existing diagnostics | Focused test's three HTTP 401 assertions pass | | Only affected list wrappers change | Diff contains the three status predicates plus focused test/evidence; session and create wrappers untouched | ## Documentation decision No operator/API documentation change is needed: this restores documented list behavior for a healthy GLPI response without changing command syntax, output, configuration, or public contracts. This task scratchpad records delivery evidence. ## Risks / blockers - Existing dirty `.mosaic/orchestrator/mission.json` and `.mosaic/orchestrator/session.lock` are runtime-owned and will not be edited or committed.