Devostasis 0.1.7
A review of what already exists. No new capability, six defects fixed, one open question filed, two guards added. No rule, threshold, window or gauge changed.
Incomplete evidence looking complete, twice. The release collector always reported AVAILABLE with a recent_only coverage flag, so a repository with more than thirty releases had the newest thirty recorded as the whole truth; a full page is now PARTIAL with the cap reason, like every other enumeration. Downstream, a PARTIAL release inventory left no coverage note in activity.json, so even a flagged truncation read as complete in the report. No Vital reads releases, so no band was ever wrong.
Activity could declare an interval wider than its evidence. The report declares the interval since the previous bundle, as the reporting contract requires, but the inventories behind it reach back 28 days. After a longer outage the report claimed the whole gap and the unobserved part read as "nothing happened". It now carries INTERVAL_EXCEEDS_EVIDENCE_WINDOW:evidence_from=<timestamp>. Whether collection should widen to the interval instead is a question for the reporting contract, filed as issue #9.
Three smaller defects. A 304 answered to a request that carried no entity tag was treated as a successful empty body, and is now an explicit failure. A cached entry whose body was null kept its tag, so every later 304 read as a miss and refetched forever. all_projects collected a rename list that nothing consumed.
Two guards against drift. The conformance table may not cite a test that has disappeared, the specification index must link every page, and every contract identifier the runtime writes into a bundle must be findable in the specification. The last check immediately found five member schema identifiers documented nowhere, now listed in the bundle specification. That is the mechanical half of the drift debt; the semantic half stays manual.
Verified against 231 tests and all 218 bundles of the observed fleet.
Usage: uses: drevendev/devostasis/.github/workflows/observe-self.yml@v0.1.7 (see docs/deployment.md).
Generated with Claude Code.