All checks were successful
ci/woodpecker/pr/ci Pipeline was successful
Accept HTTP 206 responses from ranged GLPI list endpoints while preserving failures for genuine error statuses. Add red-first regression coverage across ticket, computer, and user lists. Closes #807 Co-Authored-By: OpenAI GPT <noreply@openai.com>
3.5 KiB
3.5 KiB
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, ordocs/TASKS.md. - Add task-local delivery evidence here as required by the mission protocol.
Plan
- Add a deterministic shell harness that copies each wrapper beside stubbed
session-init.sh, credentials, andcurlboundaries. - Prove RED against the current 200-only gates: 206 must fail before the implementation change.
- Update all three status gates to accept exactly 200 or 206.
- Prove GREEN for 206 rendering and genuine 401/500 failures, then run repository quality gates.
- 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
- Mission, task, PRD, QA, documentation, and code-review guidance loaded.
- RED regression evidence captured:
test-list-http-status.shexited 1; all three wrappers rejected 206 while retaining 401 failures. - Implementation complete.
- 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/storerestored 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.jsonand.mosaic/orchestrator/session.lockare runtime-owned and will not be edited or committed.