Repository navigation
Releases: engindemirog/ai-native-engineering-workspace
Release list
v1.16 — A feature fits in a day
From a field project where one feature (22 acceptance criteria, four fix rounds) took over a
working day. The root cause was size, magnified by repeated full runs and a dirty e2e database.
Text only — no script changes; every rule here is Documented.
- Size signal: the spec's self-critique recommends a split when a spec holds more than one user
capability or more than ~8–10 criteria; keeping it as one is recorded in the spec. R-08: a new
capability mid-work is a new spec, not a change. - Data counts too (testing.md, Resource hygiene rule 5; ANEW-0007 revised): every run starts
from a known state; what a run writes never reaches the next one. Bootstrap's inventory names it. - A full green is evidence for its commit — run it once (Two speeds rule 6; ANEW-0009
revised): review, verify and gates cite the existingCHECK GREEN (full, …)of the exact commit
(handoff, or a CI run whose SHA equals HEAD) instead of re-running. Writing one test runs that
test (rule 7): authoring, never evidence; repeat runs only for R-03. - Fix rounds are counted: fix commits carry
[plan NNNN/fix-k]; the review report opens with
Review round n · fix rounds so far: k; a fourth round is not started before R-06.
Upgrading
docs/testing.md: intent — Resource hygiene rule 5 (data); Two speeds rules 6 (cite, don't
re-run, same SHA) and 7 (one test while writing it; repeats only in R-03).prompts/spec.md: intent — SIZE step in the self-critique.specs/TEMPLATE.md: the same hint
in the Acceptance criteria comment.prompts/build.md: intent — rule 7 while iterating;[plan NNNN/fix-k]on fix commits, no
fourth round before R-06.docs/git.md: the fix-commit format.prompts/review.md: intent — cite an existing full green for the commit; open with the round
count; flag R-06 after round 3.prompts/verify.md: intent — cite, don't re-run.prompts/recovery/spec-change.md(R-08): intent — a new capability is a new spec.prompts/bootstrap.md: intent — the inventory names data left for the next run.workflows/feature-development.md,prompts/recovery/README.md, README: the matching lines.docs/decisions/anew/ANEW-0007,ANEW-0009: take as they are (each gains aRevised:line)..anew-version:v1.16.- Full diff: v1.15...v1.16
v1.15 — Prompts close their gaps
A review of every prompt against the roles, workflows and testing rules. Text only — no script
changes; every rule added here is Documented.
review.md: loads the approved plan too (the Tests dimension checks its criterion ↔ test map);
new Plan conformance dimension — changed files outside the plan's list are findings (R-07);
Correctness covers every User experience state and accessibility.build.md: an error from the current plan step is fixed inside BUILD; R-01 starts when the error
comes from outside the step or survives two attempts. The ramp list adds R-03, R-10 and R-09.plan.mdandspecs/plans/TEMPLATE.md: the criterion ↔ test map has a Profile column
(fast or full); a new test must be caught by its step's selector (testing.md, rule 4).spec.md,plan.md,adr.md,review.md,verify.md: write in the docs language from
AGENTS.md; field labels stay English.spec.md: ask for a link to a fixed version of the design (or a dated export); a design that
changes later is a spec change (R-08).clarify.md: at most ~7 questions, ordered by impact; the rest wait for the self-critique.verify.md: the evidence paragraph is a list; "a test that can't fail" is checked by reading
the assert or by breaking the code in a temporary copy outside the repo, never committed.bootstrap.md: the testing interview asks, for UI work, the e2e tool and who owns the
app-under-test lifecycle.- R-09: the fresh session deletes the state file once it has taken over; nothing outlives it
unless moved into the plan. R-03, R-08, R-12 end with./scripts/check (full)green. R-05, R-06,
R-09 and R-10 change no code (R-05's red reproduction is the point), so they carry no check exit.
Upgrading
- Documents (intent, apply in your own words if you translated them): each bullet above is the
intent for its file;docs/commands.md—/reviewreads the plan. specs/plans/TEMPLATE.md: add the Profile column; existing plans need no change..anew-version:v1.15.- Full diff: v1.14...v1.15
v1.14 — Fast output is caught as evidence
From the same field report; it is also ANEW-0009's first revisit trigger.
scripts/doctorwarns (every mode, never fails) when a shipped spec, or in CI the pull request
description, showsCHECK GREEN (fast, …)and noCHECK GREEN (full, …). The description is
read from the event payload ($GITHUB_EVENT_PATH), no network; it is checked when the PR is
opened, reopened or pushed to, not on a description-only edit. An untagged conf's
(fast = full: …)run counts as full. The rule moves from Documented to Validated.- R-02 (red test): many unrelated tests red at once → check the environment first (daemons,
containers, ports); a crashed environment is not a code fault. scripts/selftestcovers the warning for specs and PR descriptions, and that full output, or an
untagged--fastrun, is not reported.
Upgrading
scripts/doctor(behavior): for eachspecs/done/*.md, and for$GITHUB_EVENT_PATHwhen it is
a pull-request payload, warn if the text containsCHECK GREEN (fast,and not
CHECK GREEN (full,.scripts/selftest(behavior): the doctor wrapper also unsetsGITHUB_EVENT_PATH; new
doctor_pr <payload>helper; the scenarios above.docs/testing.md: intent — Two speeds rule 2 names the doctor warning.prompts/recovery/red-test.md: intent — environment first when many unrelated tests are red.- README: the "Evidence cites the full profile" row is Validated.
.anew-version:v1.14.- Full diff: v1.13...v1.14
v1.13 — Upgrades without collisions
From the same field report: upgrading a derived project meant guessing its base, renumbering the
template's ADRs around the project's own, and losing local script extensions to "copy".
.anew-versionrecords the ANEW version a workspace is based on;scripts/doctorprints it
(ok ANEW base version: v1.13) and warns when it is missing. In the template,scripts/selftest
checks it matches the newest CHANGELOG entry.- The template's decisions move to
docs/decisions/anew/asANEW-0001…ANEW-0009(each
with aRevised:line; decisions unchanged), plus ANEW-0010 recording why. Project ADRs number
from 0001 indocs/decisions/with no collisions;prompts/adr.mdcounts only those. - CHANGELOG opens with "How to upgrade": base from
.anew-version, behavior lists for scripts,
one-line intents for documents, a diff link per release. scripts/selftestchecks usage output by itsusage:prefix and exit code, not its full text,
so a legitimate extension of a script's arguments is not reported as a difference.
Upgrading
.anew-version(new): one line,v1.13.scripts/doctor(behavior): printANEW base version: <first line of .anew-version>as ok;
warn when the file is missing. Never fail on it.scripts/selftest(behavior): usage assertions matchusage:only; fixture copies
.anew-version; the version scenarios above.docs/decisions/: move the template decisions you have (ADR 0001–0009 as shipped by ANEW, if
you kept them in your own range) todocs/decisions/anew/under theirANEW-NNNNnames, or take
the folder from v1.13 and delete your copies. Your own ADRs stay where they are; one that had
to be renumbered around a template ADR may keep its number. Add ANEW-0010.docs/decisions/README.md: intent — two owners, two places; the next project number counts
onlydocs/decisions/.prompts/adr.md: intent — NNNN is the highest indocs/decisions/+ 1,anew/excluded.- README: the
docs/decisions/row names the two places. - Full diff: v1.12...v1.13
v1.12 — Check tells you how long it took
From a field report (a two-stack project that adopted v1.7): the split between fast and full is
decided on step durations, and nothing in ANEW measured them.
scripts/checkprints<== <step> (n s)after every step (red ones too) and the total in the
green line:CHECK GREEN (full, 14 steps, 1080 s).date +%s, nobc; where the clock gives
no number, times are left out and the run still counts. The==> <step>lines and the
CHECK GREEN (<profile>, n steps/CHECK FAILED (<profile>) at step:prefixes are unchanged.docs/testing.md, Two speeds: "~a minute" is a per-step threshold, not a fast total; when fast
grows too long, drop lint, then formatting, then unit tests. New rule 4: split a test step by a
selector (category, trait, tag, namespace) and its inverse, never by a list — a test added
later then still runs in one profile. New rule 5: decide on the median of at least 3 runs.prompts/bootstrap.md(3d) applies rules 4 and 5 at the gate.scripts/selftestchecks that durations are present (never their value) and that a missing
clock leaves them out.
Upgrading
scripts/check (behavior, for copies you extended): time each step with date +%s and print
<== <step> (n s) after it, red or green; append , <total> s inside the green line; print no
time when date +%s is not a number. Anything that parses the green line must accept the extra
field. docs/testing.md: Two speeds rule 3 (per-step threshold, removal order), new rules 4 and 5.
prompts/bootstrap.md 3d: selector split, median of 3. Full diff: v1.11...v1.12
v1.11 — Codex becomes a first-class adapter
adapters/codex/: every command as a project-level Codex skill (skills/<name>/SKILL.md, the
same pointers as the Cursor commands), invoked as$analyze,$plan 0003, … No pointer file:
Codex readsAGENTS.mdnatively. Each skill is explicit only (agents/openai.yaml:
allow_implicit_invocation: false), so Codex never starts a gated stage by itself. Review runs
in a fresh Codex session;specs/done/is backed by CI. The deprecated user-level custom
prompts (~/.codex/prompts/) are not used../scripts/init codexinstalls the skills to.agents/skills/(kept unless--force).scripts/doctor: adapter parity covers Codex (adapter parity: <x> missing in codex) and fails
on a Codex skill that is not explicit-only;.agents/skills/counts as an installed adapter.
scripts/selftestcovers both checks.- README (quickstart, command sentences, a Codex column in "How strongly is each rule held?"),
adapters/README.mdanddocs/commands.mdlist Codex next to the other tools.
Upgrading
Where Codex is used, run ./scripts/init codex and commit .agents/skills/. Template users copy
adapters/codex/ and the scripts/init, scripts/doctor and scripts/selftest changes.
v1.10 — The commands document themselves
docs/commands.md: one page for all 17 commands (5 scripts, 12 slash commands) — command map
with the four human gates, then for each: what it does, when to use it, reads / writes, stops
at, lite / strict, refusal (verbatim), common mistake; a quick-reference table and the two
golden rules. It points at the files that define the rules instead of restating them; the
recovery catalog stays inprompts/recovery/README.md.- README links it at the top ("New here?").
scripts/doctorrequiresdocs/commands.mdlike any core file and, whereadapters/exists,
fails when a command or script has no section in it
(command reference out of date: /<x> missing from docs/commands.md).scripts/selftestproves
the guard fires and clears.- No behavior changes.
Upgrading
Copy docs/commands.md, the README "New here?" line, scripts/doctor and scripts/selftest.
If you added your own commands, give each a ### `/<name>` section in docs/commands.md.
v1.9.1 — README stands on its own
- README drops the "Origin" section that pointed to the course: ANEW is now its own environment,
separate from it. No change to the core.
Upgrading
Nothing to copy.
v1.9 — The residue test is one command
scripts/residueruns the residue test (docs/testing.md, Resource hygiene): it measures processes
and available memory, runs./scripts/checktwice (--fastfor the fast profile), and names
every survivor with its command line; memory over the tolerance (ANEW_RESIDUE_MB, 512 MB) is
residue too. A process only counts if it is still alive at a second look. Unix-likes viaps,
Windows (Git Bash) via PowerShell/CIM. A red check aborts it: the test needs a green check.docs/testing.md,prompts/bootstrap.mdandworkflows/bootstrap.mdname the command, for both
profiles;docs/testing.mdadds: rerun it wheneverscripts/check.confchanges.scripts/selftestcovers it (usage, red check,--fast, a leaked process named, a waited-for
child not reported). Its assertions look for the scenario's own marker, so a busy machine cannot
make them flaky.
Upgrading
Copy scripts/residue (keep it executable) and scripts/selftest, then run ./scripts/residue and
./scripts/residue --fast against your scripts/check.conf.
v1.8 — ANEW proves its own scripts
scripts/selftest: 50 scenario checks thatscripts/check(profiles, tags, failures, arguments,
stdin) andscripts/doctor(every gate,--strict, immutability, twin specs, mini-specs,
evidence hygiene, adapter parity, missing core files) behave as documented. Each scenario runs
in a throwaway copy of the ANEW core outside the repo; a project's own specs and code are never
copied, so it behaves the same in the template and in bootstrapped projects. CI runs it after
doctor.- README catches up with v1.4–v1.7: the enforcement table gains evidence hygiene (Validated),
resource hygiene and the UX section (Documented);--fast, evidence pointers and the selftest
are described; the ADR range and the script count no longer go stale. docs/decisions/README.md: accepted ADRs may take editorial corrections that leave the decision
unchanged, recorded as aRevised:line. ADR 0007 records its v1.6.1 wording change that way.
Upgrading
Copy scripts/selftest (keep it executable) and add its step to your CI's doctor job
(.github/workflows/check.yml). If you changed scripts/check or scripts/doctor locally, the
selftest tells you where your copy now differs from the documented behavior.