Epic 20 post-V1 capabilities, and four guards that had frozen the world - #10
Merged
Conversation
Delivers Epic 20 (FR38/FR39/FR40) and corrects what a checkpoint review of it found. All three capabilities are disposed `library-seam`: built, typed, tested, and reachable from nothing -- no importer in argus/, no cli.py reference, no console script. The PRD says so at the destination; DF-20-1-A/-2-A/-3-A file it. THE REMEDIATION ENGINE PROPOSED PATCHES THAT BREAK THE TEST. Story 20.2's review round 1 flagged the no-assignable-state fallbacks as vacuous (Medium #2). Round 2 closed it on `assert len(locals()) > 0`, recorded as "inspects local state". Measured at checkpoint: that predicate is False in a scope holding no locals, and in BOTH cases the suite pinned -- an empty `pass` body, and a vacuous assert standing before its assignment -- the patched scope holds none. Executed, not inferred: both patched sources raise AssertionError. A vacuous test that passed became a test that fails. `verify_patch_dry_run` could not see it: it validates AST syntax, and the patch is syntactically perfect. The two unit tests could not see it either -- they asserted the emitted STRING, not the behaviour of the patched test. All five fallback sites now DECLINE when no prior assignment is in scope. AR10 honest degradation: propose nothing rather than fabricate an assertion. AC2's "concrete, non-vacuous" requirement beats its enumeration of shapes; the tension is stated in the story rather than buried. FOUR GUARDS HAD ENCODED "NO RELEASE HAS EVER HAPPENED" AS A FACT. Same class as the two 8c05a10 fixed, found by walking the rest of the family: * TC-DOCS-001-55b asserted the interim caveats were ON DISK while -55 demanded they be removed once a tag exists. The pair could not both be green after a real release -- the guard that polices a transition could not survive it. The pre-release corpus is now simulated, as direction 1 already simulated a deletion. No real tag, and now no real caveat either. * TC-DOCS-001-71 checked tokens that the SUPERSEDED sentence still satisfies, so it would have passed unchanged on a measurement that had inverted underneath it. The live result is pinned too, and the two must disagree. * TC-RELEASE-001-10 required "has never executed" in release.yml, which -55 requires REMOVED once a tag exists. Now asserts the header is in one of the two honest states D2/D13 allow: disclaims execution, or cites a run. * _FIGURE_CLAIMS pinned the literal `argus_agent-0.1.0.tar.gz`. At 1.0.0 it matches nothing, and the failure it raises is "a published measurement was DELETED" -- pointing the next reader at a deletion that never happened. `_Delivery.same_act` was a self-certifying exemption from an honesty guard: a bare boolean asserting "admitted and disposed in one act" that nothing measured. It is now derived from the PRD's own `amendments:` record -- named in exactly one amendment, dated the day it was disposed. Verified to discriminate: FR29 (2026-08-11) and FR7 (unnamed) both fail it. Distribution figures re-derived from a fresh build rather than re-typed: 108 modules, 108 importable, 116 wheel entries, 115 sdist members. README's 0.1.0 artifact filenames corrected struck-not-deleted. argus.spec is ignored, not committed: build-binaries.yml invokes pyinstaller with CLI flags and never reads a spec file, and sprint-change-proposal-2026-08-10 records as measured fact that no `.spec` exists in this tree. Committing it would falsify that line with no guard to catch it. Full suite green, exit 0 (one skip: naming's exemption list is empty, which is the intended end state). mypy argus/ clean over 108 source files. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
🛡️ Agent-Argus Code Quality & Assurance ReportHello! Agent-Argus has audited your commit (c3b53f8). ArgusAgent coverage ledger (schema 1)
💡 Student Tip: Make sure you have no bare tests or committed API keys in your repository before submitting! |
Mechanical follow-up to Epic 20, kept as a SEPARATE commit because the operator ruling of 2026-08-12 requires it: a regeneration is legitimate only through the artifacts' own renderers at a truthful sha, never by hand, and never by loosening the assertion that caught it (DF-8-5-B). Produced by `python scripts/regenerate_dogfood_artifacts.py`, which refuses a dirty argus/ tree and re-reads each file to assert it equals the renderer's return value. Cited sha f5eaf93; 108 tracked source files, 35885 total LOC. WHY THIS WAS RED IN CI AND GREEN LOCALLY, because the answer is not a hole. The artifacts describe TRACKED argus/. While Epic 20's twelve modules were untracked the tracked tree had genuinely not moved, so TC-DOGFOOD-001-50 was correctly green -- committing f5eaf93 is what made the artifacts stale, moving argus/ by 12 files and 1296 insertions since the 91c5124 they cited. That is the bootstrap ordering DF-10-4-D named and the regeneration script states in its own docstring: commit first, then regenerate. Six tests failed on PR #10 across the 3.10/3.11/3.12 matrix, all on this one cause: every figure these artifacts publish -- population, total LOC, cut edges, partition_ids, the sized ceiling $X, the NFR-C1 baseline ratio -- is derived from argus/** content, so all six were claims about a tree nobody was running. Full suite green, exit 0 (one skip: naming's exemption list is empty, the intended end state). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Delivers Epic 20 (FR38/FR39/FR40) and the corrections a checkpoint review of it found. One commit,
f5eaf93, 38 files.Opened as a PR rather than pushed to
masteron purpose.audit-ci.ymltriggers onmaster/mainpushes and on PRs targeting them — nothing runs ondev. This change has passed only the local suite, and "local green while CI is red" is the exact condition under which v1.0.0 shipped with stale release surfaces. The gates should run before this lands, not after.Epic 20
Three post-V1 capabilities, all disposed
library-seam: built, typed, tested, and reachable from nothing — no importer inargus/, nocli.pyreference, no console script.DF-20-1-A/-2-A/-3-Afile the gap; the PRD records it at the destination.argus.parsers— tree-sitter adapters for TS/JS, Go, Java (FR40)argus.remediation— unified-diff patch generation with dry-run AST verification (FR38)argus.adapters.lsp— LSP 3.17 diagnostics over stdio and socket (FR39)The remediation engine proposed patches that break the test
Story 20.2's review flagged the no-assignable-state fallbacks as vacuous, then closed it on
assert len(locals()) > 0, recorded as "inspects local state". Measured at checkpoint: that predicate isFalsein a scope holding no locals, and in both cases the suite pinned, the patched scope holds none. Executed, not inferred — both patched sources raiseAssertionError. A vacuous test that passed became a test that fails.Nothing could see it:
verify_patch_dry_runvalidates AST syntax, and the patch is syntactically perfect; the two unit tests asserted the emitted string, not the behaviour of the patched test.All five fallback sites now decline when no prior assignment is in scope — propose nothing rather than fabricate an assertion.
Four guards had encoded "no release has ever happened" as a fact
Same class as the two
8c05a10fixed, found by walking the rest of the family:TC-DOCS-001-55b-55required their removal once a tag exists — the pair could not both be green after a real releaseTC-DOCS-001-71TC-RELEASE-001-10"has never executed"inrelease.yml, which-55requires removed_FIGURE_CLAIMSargus_agent-0.1.0.tar.gz; at 1.0.0 matched nothing, failing with "a published measurement was DELETED"_Delivery.same_actwas a self-certifying exemption from an honesty guard — a bare boolean nothing measured. It is now derived from the PRD's ownamendments:record and verified to discriminate: FR29 and FR7 both fail it.Verification
mypy argus/clean over 108 source files.argus.specignored rather than committed —build-binaries.ymlinvokes PyInstaller with CLI flags and never reads a spec file, andsprint-change-proposal-2026-08-10records as measured fact that no.specexists in this tree.Left open deliberately
DF-20-1-A/-2-A/-3-A(the three seams reach no surface),DF-10-2-A(C/C++/Ruby/Rust ground but extract no definitions), and the ≥80% attested-externalization gate, which nothing here measures.🤖 Generated with Claude Code