feat(manifestos): seed quality+testing manifestos for forge-loop (#135)#139
Merged
Merged
Conversation
Dogfood the manifestos system on forge-loop itself by writing the seed quality and testing manifestos that every future forge-loop change is gated against. quality-manifesto.md codifies five rules drawn from this week's persistent-worker work: no shared module-level state (#100), typed Protocol+Fake at every I/O boundary (#104), single Settings source of truth (#98), typed events instead of untyped **fields (#99), and no subprocess.run for SDK-able services (#103, #105). Each rule names the concrete issue it came from so future contributors know the *why*. testing-manifesto.md codifies six rules drawn from this week's iteration-probe bugs: one test per state-machine edge plus a fallthrough adversarial (would have caught #97/#120/#128), an adversarial test for the false case of every external-dep assumption, both ==0 and !=0 branches for every subprocess.returncode (specifically #128), a contract test pinning every Fake to its Real, hypothesis property tests on >4-branch / user-input functions (#102), and an adversarial test that every infinite-loop guard actually fires. tests/test_manifestos_discovery.py is the meta-validation gate: it discovers and parses both files, asserts each rule has a rationale, asserts the spec-mandated issue references are present, and includes adversarial tests that stubs and missing files are detectable. 22 tests, all pass.
Owner
Author
|
Source issue #135 was closed mid-flight (state: closed). Loop refusing auto-merge. Reopen the issue OR merge manually. |
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.
Closes #135. Part of #130.
Summary
.forge/quality-manifesto.md— 5 rules + rationale, each citing the issue that motivated it..forge/testing-manifesto.md— 6 rules + rationale, drawn from this week's iteration-probe bugs.tests/test_manifestos_discovery.py— meta-validates both files (discoverability, rule structure, rationale presence, required issue references, anti-stub guard)..gitignoreto un-ignore exactly these two seed files while keeping the rest of.forge/operator-local.Acceptance criteria — coverage
Quality manifesto rules (with rationale citing source issue):
os.environ.getoutsidesettings.py. (refactor(config): single pydantic-settings model (closes #84) #98)**fieldsfor registered kinds. (refactor(events): typed event framework (closes #88) #99)subprocess.runfor SDK-able external services. (refactor(roles): critic + PO migrate to Claude Agent SDK (closes #85) #103, refactor(gh): typed GhClient + githubkit (framework for #83) #105)Testing manifesto rules:
subprocess.returncode⇒ test both==0and!=0(hot-fix(iteration): probe misclassification + escalate label-removal #128).Test plan
pytest tests/test_manifestos_discovery.py— 22 passed