Skip to content

Tag practice exercises with practices and prerequisites#1036

Closed
pablo-miralles wants to merge 1 commit into
exercism:mainfrom
pablo-miralles:practice/tag-practices-prerequisites
Closed

Tag practice exercises with practices and prerequisites#1036
pablo-miralles wants to merge 1 commit into
exercism:mainfrom
pablo-miralles:practice/tag-practices-prerequisites

Conversation

@pablo-miralles

Copy link
Copy Markdown

Summary

  • Fills practices and prerequisites for all 108 active practice exercises in config.json (deprecated ones stay empty).
  • No new exercises — only tagging.
  • Follows configlet constraints:
    • each concept appears in practices at most 10 times
    • prerequisites only use concepts already taught by a concept exercise
    • hello-world keeps empty prerequisites

Approach

  • practices: one primary concept per exercise, distributed so common skills (strings, arrays, loops, class-basics, …) stay ≤10.
  • prerequisites: unlock using currently taught concepts (basic-syntax, strings, integers, arrays, class-basics, …).
  • Untaught concepts (e.g. foreach-loops, match-expression) can still appear in practices; they will unlock more naturally once their concept exercises land.

Gaps after tagging (0 practice links)

These concepts still have no practice exercise tagged (need future exercises and/or concept exercises first):
class-visibility, constructor-promotion, covariance-and-contravariance, readonly-properties, scope-resolution-operator, type-juggling, union-types, variable-functions, variable-length-arguments, variable-scope

Note: type-juggling and variable-length-arguments are taught by concept exercises, but were not used as primary practices tags to stay under the per-concept cap / avoid stretch mappings.

Test plan

  • Custom validation: all active tagged, max-10 respected, prereqs ⊆ taught concepts
  • bin/configlet lint
  • Maintainer review of stretch tags (e.g. break-continue-keywords on killer-sudoku-helper, match-expression on say / yacht / robot-simulator)

Made with Cursor

Wire the existing syllabus concepts into config.json without adding exercises, respecting the max-10 practices-per-concept limit and only using taught concepts as prerequisites.

Co-authored-by: Cursor <cursoragent@cursor.com>
@mk-mxp

mk-mxp commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

@pablo-miralles Thank you for wanting to help! I'm sorry, this is actually wasted effort here: The issue #324 you worked on is labelled "paused" for a reason. Prerequisites hide exercises from students, until they have solved a concept exercise. We decided to wait with this, until we have enough exercises:

It should be at least 20 concept exercises to plan out the prerequisites.

Please come up with a plan for discussion first, especially for this task. A pull request made with assumptions you have never discussed is like to cause a lot of frustration on both of our sides.

Thanks again for offering your help!

@mk-mxp mk-mxp closed this Jul 23, 2026
@pablo-miralles

Copy link
Copy Markdown
Author

@mk-mxp Thank you for the clear explanation, and sorry for the wasted review time :')

This was my first PR ever. I noticed that other tracks in the website lock many practice exercises and unlock them as you learn concepts, so seeing PHP without that surprised me and I jumped straight into this PR. I didn’t notice that #324 was already open. My bad!

Just to make sure I understand the workflow going forward: I should start from the issues (find a related one, or open a new issue referencing existing discussion), get agreement on a plan there, and only then open a PR. Is that correct?

I’d like to help with concept exercises next, until we have enough to start tagging. I already opened #1035. Should I check #578, ask which exercises are needed there, and only then work on a PR linked to that issue?

Thanks again for your time, really appreciated!

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.

2 participants