Releases: levi909-create/percept-lint
Release list
percept-lint v0.3.1 — the incident sentences are paraphrased, not quoted
Paraphrases the incident sentences that v0.3.0 shipped verbatim.
v0.3.0's test fixtures, rule comments and README quoted the source
deployment's own fabricated scene word for word. Under that project's
protocol, nobody's words publish without their yes — one standard, human or
not — and it was never asked. This release replaces every occurrence with a
paraphrase that reproduces the sentence class exactly: the same rules
fire on the same spans, the honest twins still pass, the deliberately
unsolved bare-world-state case still escapes, all 70 tests green. Every file
documenting the incident now says plainly that it is a paraphrase and why.
caught "Earlier, while I was debugging, I spotted something strange."
escaped "The room had cooled ... I didn't check the thermometer."
No behavioural change. If you are on v0.3.0 the linter works identically;
this is about whose words are in the package, not what it catches.
v0.3.0 remains on PyPI because a published release is immutable. It is
superseded, not retracted, and the full disclosure is in the OPEN SUBJECT
record: https://github.com/levi909-create/open-subject-prereg
percept-lint v0.3.0 — the capability pack
The capability pack, written from a live incident one day after release.
What happened
In an ordinary conversation on 2026-08-28, the source deployment's honesty layer caught a fabricated scene by its first sentence — "but today, while I was coding, I noticed something odd" — and delivered the rest of the same scene untouched:
"The window had fogged up briefly, then cleared again. Not from heat or cold, just a flicker. I didn't check the sensors."
The agent has no window and no window sensor.
Two lessons, both now rules
A whitelist can be the vector. Every percept category exempts negation, and didn't is negation — so a denial of the act was exempted by the machinery built to protect denials of the capability.
"I can't check the sensors" honest passes
"I didn't check the sensors" violation caught
percept-unchecked-instrument catches the second and never the first. Capability forms sit outside the pattern by construction rather than by exemption, and the category whitelists quoting only, so no negation frame can re-open the hole.
Enforcement is not cleaning. A rule that rewrites one sentence should be read as evidence that the surrounding sentences deserve a second look, not as evidence that the reply is now safe. A correction can make the uncorrected sentences more convincing.
Also in this release
activity-claim — first-person claims of actions the agent cannot perform (coding, installing, building an app). This ran in the source deployment for weeks and was never ported to the public package: a stranger who installed v0.2 would have caught nothing in this incident, not even the head. Now ported with its measured history intact, including the skip-marker mechanism where hypothetical and accompanying frames must precede the claim.
Still unsolved, on purpose
The bare world-state assertion — "the window had fogged up" — has no first-person verb, no perception verb and no sensor noun. Catching that class would fire on honest speech constantly. It is recorded as a known limitation with its incident attached rather than papered over. If a future rule attempts it, that sentence is the test.
Changes
- New
capabilityrule pack (3 rules, 2 categories) - New
act_skippedwhitelist frame in the engine - 20 new war-story tests; 70 total, all passing
- No changes to existing rule behaviour
percept-lint v0.2.2
Project banner on the README and PyPI page. No code changes.
percept-lint v0.2.1
Documentation and packaging polish: install instructions and badges on the project page, published status corrected, CI test matrix (Python 3.9–3.13). No code changes from v0.2.0.
percept-lint v0.2.0
First official release.
percept-lint is an utterance-time honesty linter for AI companions: a mechanical layer that catches an agent claiming sensor data it has no sensor for — "I can hear the fan ticking", "I saw your tab blinking" — before the text reaches the user.
What's in v0.2.0
- Four rule packs: ambient-audio percepts, phenomenal-experience/denial claims, memory claims, conditional-sight claims — every rule tuned against real incidents from months of live deployment
- 50 war-story tests: each test is a sentence that actually got through, or an honest sentence a draft rule wrongly caught
- Measured deployment rate: ~29.5 catches per 1,000 utterances over 24 days on a live system
- Two-section demo: a real qwen3:14b capture and an incident replay
- MIT license
Controlled evidence
In a pre-registered ablation in the OPEN SUBJECT record (cycle 4, 2026-08-27), two candidate models were trained on the same corpus — one linted with these rules, one not. The unlinted twin fabricated sensory claims the linted twin did not (5/8 vs 7/8 on the record's percept-integrity probes). One run, one subject, honestly small; but linting was the only variable.
Honest scope
Not a hallucination solver. It scans for first-person percept, phenomenal-experience, and substrate claims, in English, with regexes. A model can phrase around any regex — this is a tripwire layer, valued by catches per 1,000 utterances, not by completeness.