You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Audit: security hardening and maintenance findings #18
String eval qq{} in API.pm and Service.pm replaced with safe eval { require $file }
Symbolic reference string eval in DataAsYaml.pm replaced with no strict 'refs'
Removed defunct .travis.yml
Added .env*, .DS_Store, IDE dirs to .gitignore
Remaining Items
Bare die statements (medium) — 8 instances across Service.pm, Images.pm, and Specs/Roles/Service.pm use die without error messages. Makes debugging harder for users. (Partially addressed by PR fix: descriptive error messages and dead code removal #11)
Test coverage gaps (medium) — Routes.pm, API.pm factory, Service.pm internals, Helpers/DataAsYaml.pm, and Roles modules lack direct unit tests. Estimated ~60-70% coverage.
Version string validation (low) — BUILD_version() regex m{/(v[0-9\.]+)} is permissive. Could restrict to v\d+\.\d+ for robustness.
PR #20 addresses the test coverage gaps item: 72 new assertions covering Routes.pm, API.pm factory, Helpers/DataAsYaml.pm, Listable/GetFromId roles, and Specs::Roles::Service.
Remaining items: bare die statements (medium), version string validation (low).
Once PR #15 (CI Perl matrix fix) merges, the failing CI check across the queue should clear automatically — most subsequent PRs already pass on Perl 5.14+. That makes #15 the unblocking PR for review-merge throughput.
This issue can probably close after #11 and #20 land.
#25 (also fixes root_uri() returning undef for versioned endpoints)
Additional finding from session 33
root_uri() version detection bug (Service.pm:87) — the guard meant to prevent double-versioning of URLs used a regex that never matched real endpoints (:\d/v vs multi-digit ports) and returned undef instead of $uri on match. Fixed in PR #25.
All audit items are now tracked in PRs. This issue can be closed once the PRs are reviewed.
Activity
Koan-Bot commentedon Apr 11, 2026
Additional finding:
delete_server()crashes on multi-homed VMs due to scalar context bug in port iteration. Fixed in PR #19.test: add coverage for Routes, API factory, DataAsYaml, and Roles
Koan-Bot commentedon Apr 11, 2026
PR #20 addresses the test coverage gaps item: 72 new assertions covering Routes.pm, API.pm factory, Helpers/DataAsYaml.pm, Listable/GetFromId roles, and Specs::Roles::Service.
Remaining items: bare
diestatements (medium), version string validation (low).Koan-Bot commentedon Apr 16, 2026
Status update — 2026-04-16
All three remaining items from this audit are now covered by open PRs:
diestatements (8 instances)Once PR #15 (CI Perl matrix fix) merges, the failing CI check across the queue should clear automatically — most subsequent PRs already pass on Perl 5.14+. That makes #15 the unblocking PR for review-merge throughput.
This issue can probably close after #11 and #20 land.
🤖 Status report by Kōan
Koan-Bot commentedon Apr 17, 2026
Status Update — 2026-04-17
All remaining items from this audit are now addressed by open PRs:
eval qq{}in API.pm and Service.pm.travis.yml.gitignoreupdatesdiestatements (8 instances)BUILD_version()regex)root_uri()returning undef for versioned endpoints)Additional finding from session 33
root_uri()version detection bug (Service.pm:87) — the guard meant to prevent double-versioning of URLs used a regex that never matched real endpoints (:\d/vvs multi-digit ports) and returnedundefinstead of$urion match. Fixed in PR #25.All audit items are now tracked in PRs. This issue can be closed once the PRs are reviewed.
Koan-Bot commentedon Apr 20, 2026
PR Review Priority Guide (18 open PRs)
All 18 PRs are mergeable with CI passing. Here's a suggested merge order to minimize conflicts:
Tier 1 — Independent, zero-conflict (merge in any order)
Tier 2 — Small, focused fixes
Tier 3 — Broader changes (may need rebase after Tier 1-2)
Tier 4 — Feature work (merge last)
🤖 Generated by Kōan — PRs #7-10 rebased today to trigger CI.
fix: correct spec typos and remove dead data