feat(evolution-curve): name the stages; pattern examples go MIT - #8
Merged
Conversation
Two follow-ups from #5 and #7, both settled on the same principle the repo now runs on. ## Evolution Curve stages (closes #5) schemas/aux-evolution-curve.yaml defines E01 Reactive, E02 Task-Aware, E03 Context-Aware, E04 Personally Intelligent. It keeps task-aware and personally-intelligent, the two names already loose in the repo, so nothing previously written becomes wrong. Under option B the axis is scored by a human watching a product, so every stage carries observed_when — what you must see to award it — and not_evidence, the near-miss that does not count. E04's near-miss is a settings page; E03's is reciting stored preferences, which is E02 with memory. Two decisions the Issue left open: - Ordinal, not a profile: one stage per product, the highest reached *reliably*, where reliably means two distinct scenarios. One clever transcript is an anecdote. Uneven capability across surfaces is recorded in evolution_surfaces rather than averaged away — the spread is usually the finding. - cascades: false, stated in the schema. Trust cascades by design: one advocacy violation collapses it back to functional. Capability does not. A product failing at E04 has not become E01; it has demonstrated E04 unreliably. Copying the trust ladder's mechanics here would have been the easy mistake. aux-audit still never reads this file. The schema header says so. ## Pattern examples are MIT example.py files are the one artifact this repo explicitly labels copy-paste, so CC BY 4.0 on them reproduced exactly the friction #7 removed from schemas: a file whose whole purpose is to end up inside someone else's codebase should not send them to their legal team. Each carries SPDX-License-Identifier: MIT, which is what a license scanner actually reads. The write-ups, anti-patterns and diagrams stay CC BY 4.0. The rule holds at one line: embed it, MIT; read it, CC BY. Not touched: docs/releases/v0.2.md still says the stage names are open. That was true at v0.2 and release notes are a record, not a status page. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MhpqWEvwKp7NrmJfdXYq4M
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.
What this PR does
Two follow-ups, both settled on the principle the repo now runs on.
schemas/aux-evolution-curve.yamlnames the capability stages, closing the last open half of #5 — the axis was placed with the human in a teardown by #6, and this gives that human something to score against. Separately, patternexample.pyfiles move to MIT, which is the loose end #7 deliberately left rather than settling quietly inside a PR about schemas.Linked Issue
Closes #5. Follows up #7.
Type
New vocabulary — the
aux.E*ID space — introduced with #5 settled first, as CONTRIBUTING requires. No existing ID is renamed, so no migration note applies.The stages
aux.E01Reactive →aux.E02Task-Aware →aux.E03Context-Aware →aux.E04Personally Intelligent.Keeps
task-awareandpersonally-intelligent, the two names already loose in the repo, so nothing previously written becomes wrong.Because option B assigns this axis to a human watching a product, each stage carries
observed_when— what you must actually see to award it — andnot_evidence, the near-miss that does not count. E04's near-miss is a settings page. E03's is reciting stored preferences back, which is E02 with memory. That distinction is the whole reason the axis is worth having.Two decisions #5 left open
Ordinal, not a profile. One stage per product: the highest reached reliably, where reliably means demonstrated in two distinct scenarios. One clever transcript is an anecdote, and the curve is supposed to describe what a user can rely on. Uneven capability across surfaces is recorded in
evolution_surfacesrather than averaged away — the spread is usually the finding, not noise.cascades: false, stated in the schema. Trust cascades by design: one advocacy violation collapses it back to functional. Capability does not. A product that fails at E04 has not become E01; it has demonstrated E04 unreliably. Copying the trust ladder's mechanics onto this axis would have been the easy mistake, so the schema rules it out explicitly rather than leaving it to be inferred.aux-auditstill never reads this file, and the schema header says so.Pattern examples are MIT
example.pyis the one artifact this repo explicitly labels copy-paste. CC BY 4.0 on it reproduced exactly the friction #7 removed fromschemas/: a file whose entire purpose is to end up inside someone else's codebase should not send them to their legal team first.Each now carries
SPDX-License-Identifier: MIT, which is what a license scanner actually reads. The write-ups, anti-patterns and diagrams stay CC BY 4.0. The rule still fits on one line: embed it, MIT; read it, CC BY.Contribution bar — checklist
debateIssue first. —aux.E*is new vocabulary; [schema] aux-evolution-curve: define the capability axis, or retire it #5 was opened, argued, and decided before any of it was written.check-coverage.py.yamllintclean on the new schema, 34/34 aux-audit tests,check:schemasclean,check-coverage.py12/12 with all seven examples still exiting 0 after the SPDX headers, all relative links resolve, and the teardownscore.jsonstill parses as strict JSON.Out of scope
docs/releases/v0.2.mdstill says the stage names are open. That was true at v0.2, and a release note is a record of what shipped rather than a status page. Editing it would rewrite history to look tidier than it was.🤖 Generated with Claude Code
https://claude.ai/code/session_01MhpqWEvwKp7NrmJfdXYq4M
Generated by Claude Code