Skip to content

Make idstack output follow the ASD-STE100 writing rules - #113

Merged
savvides merged 10 commits into
mainfrom
worktree-feat-ste-output
Oct 4, 2026
Merged

savvides merged 10 commits into
mainfrom
worktree-feat-ste-output

Conversation

@savvides

@savvides savvides commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

Summary

All text that idstack shows to a person now follows the ASD-STE100 Simplified Technical English (STE) writing rules. This includes skill chat, AskUserQuestion text, HTML reports, the course dashboard, learner content, CLI messages and the Chrome extension.

ASD does not endorse idstack. The repo has no text from the ASD-STE100 standard or dictionary. It has only a summary of the rules in idstack's own words and an idstack word list of 47 rows.

What changed

  1. Writing standard and checker. A new preamble section gives the rules to all 11 skills. The rules and the word list are between the ste-core markers in templates/preamble.md. The new bin/idstack-ste-check (Python 3.9+, standard library only) finds the problems that a script can find:
    • long sentences (20 words for a step, 25 words for a description) and long paragraphs (6 sentences)
    • semicolons, contractions, "has been" verbs and the words in the word list
  2. Skill check steps. Each skill runs the checker on each file that it writes for a person. A smoke check counts these steps. Each skill that starts a sub-agent puts a copy of the rules in the sub-agent prompt. The report label "Consider" is now "Recommendation".
  3. Skill text. The fixed text in the skill templates is now in STE. course-export now reads NOT-READY, the verdict that bin/idstack-status --readiness prints. Before this change, it waited for ISSUES, which the script never printed.
  4. CLI messages. ./setup, bin/idstack-doctor and bin/idstack-status messages are in STE. Their test suites send the output through the checker. No machine token or exit code changed.
  5. Other scripts and the neuromyth text. The other bin/ scripts are in STE. The neuromyth text has two copies, in Python and in JS. A lockstep test keeps them the same.
  6. Extension prompts. extension/shared/ste-rules.js has a copy of the rules, and both model prompts include it. A lockstep test keeps the copy the same as the preamble.
  7. Extension text. The side panel, the error messages, the demo audits and the dossier export are in STE. A new printer, test/print-extension-output.mjs, sends this fixed text through the checker in smoke-test.
  8. Developer docs. CLAUDE.md and CONTRIBUTING.md give the new voice rule and the checker. They also give the new test counts.
  9. Final review fixes. The Evidence QA line now says "idstack checked N findings". The checker now gives exit 2 if it has no text to examine. The learn export check only shows problems, and each check step reports STE_CHECK_UNAVAILABLE if python3 is not installed.
  10. Codex review fix. If an inline element, for example <code> or <q>, has no end tag, the checker now reports an html problem. Before this change, the next block tag ended the element silently and the checker did not examine its text. Mutation 43e guards the fix.

Verification

Check Result
./test/smoke-test.sh 384/384 (it was 365)
./test/integration-test.sh 51/51
./test/test-setup.sh 19/19
./test/test-doctor.sh 14/14
./test/test-status.sh 24/24
python3 test/test-ste-check.py 36 tests OK on Python 3.9.6 and 3.12
python3 test/test-consensus-cli.py 25 tests OK
./test/test-extension.sh no FAIL on Node 24 (17 unit tests)
./test/mutation-test.sh guarded: 129, NOT guarded: 0, skipped: 0

Each of the 8 tasks got a task review. A final review of the full branch followed, and then a re-review of its fixes. The extension tests did not run on Node 22 on the build computer, so the first CI run on Node 22 is the check.

Decisions and limits

  • Word list and copyright. The ASD-STE100 notice does not let you copy the dictionary without written permission. The 47 rows are idstack decisions and not a copy of the dictionary. This is not legal advice. For written permission, contact stemg@asd-ste100.org.
  • Trademark. The rules text and the checker help say that ASD does not endorse idstack. The tool name uses "STE" only as a description.
  • What the checker does not find. It does not find the passive voice, "-ing" verbs, commands in descriptions or long noun clusters. The rules tell the model to apply them.
  • Text that only the rules control. The checker does not read these texts:
    • Chat text, AskUserQuestion text and sub-agent text.
    • The prose in .idstack/project.json.
    • The model output of the extension and the files in an export package.
  • Changes that users see. Two side-panel buttons have new names: "Audit Full Course" and "Remove All from Dossier". The accessibility tiers are now "Necessary changes" and "Recommended changes". The course-builder rubric levels are now "Satisfactory (C)" and "Unsatisfactory (D/F)". README.md and PRIVACY.md show the new names.
  • Release. This PR does not change VERSION, .claude-plugin/plugin.json, CHANGELOG.md or the extension version. The extension text changed, so the extension needs a new version and badge before an upload to the Chrome Web Store.

Test plan

  • CI passes on ubuntu (Python 3.9 and 3.12) and macOS, with Node 22.
  • The CI mutation job shows NOT guarded: 0.
  • Run /idstack:needs-analysis on a small test course. Make sure that the skill runs the writing standard check and that the report text follows the rules.
  • Load the extension and open the side panel. Make sure that the new labels show and that a demo audit shows the new text.

🤖 Generated with Claude Code

savvides and others added 9 commits October 3, 2026 12:31
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-04T05:19:47.742576Z 69851b2 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 69851b2fb6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread bin/idstack-ste-check
When an inline exempt element such as <code> or <q> had no end tag, the
next block tag cleared the skip silently. The text from the opener to the
end of the block was not examined, and the checker reported no problem,
so <p>Clean <code>you should utilize this.</p> passed. Now the checker
reports an html problem, as its help text says.

Mutation 43e guards the fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@savvides
savvides merged commit 85e6460 into main Oct 4, 2026
10 checks passed
@savvides
savvides deleted the worktree-feat-ste-output branch October 4, 2026 21:41
savvides added a commit that referenced this pull request Oct 8, 2026
Fix the follow-up defects from the PR #113 test plan
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant