Jobs page: exclude Survivalist & Self Improvement, move 'How the world got here' up, compress headings/prose #94

Closed
opened 2026-07-07 06:11:11 +00:00 by coilysiren · 2 comments
Owner

Clean up the jobs page: drop the universal professions, move the history section up, and compress the prose. Filed from a batch of eco-app feedback Kai handed the director surface. Touches frontend/src/pages/Jobs.tsx (and the jobs API in src/eco_spec_tracker/ only if the exclude is cheaper server-side).

  • Exclude Survivalist and Self Improvement. Literally everyone has those, so they carry no signal. Filter them out of the Professions and Specialties sections (and the progression rank lists if they surface there). A client-side filter in Jobs.tsx is fine, but if the jobs API already labels professions, excluding at src/eco_spec_tracker/main.py is cleaner.
  • Move "How the world got here" up. The jobs-progression section (the temporal / trajectory layer) currently sits at the bottom under Professions, Specialties, and Players. Kai wants it higher. Move it up so the history reads before or alongside the current-state tables.
  • Compress to one heading, less prose. The page opens with a long .intro paragraph plus multiple subsection titles. Kai wants at most one tier of heading + intro per page, and less prose site-wide. Cut the intro to one tight line, and flatten the subsection-title stack under "How the world got here" where it is redundant.

Done when

Survivalist and Self Improvement are gone from the jobs surfaces, "How the world got here" reads above the current-state tables, and the page carries one heading tier with trimmed prose. ward exec test + lint gates green. Update docs/FEATURES.md if the section order or content materially changed.

Clean up the jobs page: drop the universal professions, move the history section up, and compress the prose. Filed from a batch of eco-app feedback Kai handed the director surface. Touches `frontend/src/pages/Jobs.tsx` (and the jobs API in `src/eco_spec_tracker/` only if the exclude is cheaper server-side). - **Exclude Survivalist and Self Improvement.** Literally everyone has those, so they carry no signal. Filter them out of the Professions and Specialties sections (and the progression rank lists if they surface there). A client-side filter in `Jobs.tsx` is fine, but if the jobs API already labels professions, excluding at `src/eco_spec_tracker/main.py` is cleaner. - **Move "How the world got here" up.** The `jobs-progression` section (the temporal / trajectory layer) currently sits at the bottom under Professions, Specialties, and Players. Kai wants it higher. Move it up so the history reads before or alongside the current-state tables. - **Compress to one heading, less prose.** The page opens with a long `.intro` paragraph plus multiple subsection titles. Kai wants at most one tier of heading + intro per page, and less prose site-wide. Cut the intro to one tight line, and flatten the `subsection-title` stack under "How the world got here" where it is redundant. ## Done when Survivalist and Self Improvement are gone from the jobs surfaces, "How the world got here" reads above the current-state tables, and the page carries one heading tier with trimmed prose. `ward exec` test + lint gates green. Update `docs/FEATURES.md` if the section order or content materially changed.
Owner

🔒 Reserved by ward agent --driver claude — container engineer-claude-eco-app-94 on host KAI-DESKTOP-TOWER is carrying this issue (reserved 2026-07-07T06:13:51Z). Concurrent ward agent runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); --force overrides.

Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).

run seed context — what this run is carrying (ward#609)
  • Resolved: coilyco-gaming/eco-app#94 · branch issue-94 · driver claude · workflow direct-main
  • Run: engineer-claude-eco-app-94 · ward v0.419.0 · dispatched 2026-07-07T06:13:51Z
  • Comment thread: 0 included in the pre-flight read, 0 stripped (ward's own automated comments).

Issue body as seeded:

Clean up the jobs page: drop the universal professions, move the history section up, and compress the prose. Filed from a batch of eco-app feedback Kai handed the director surface. Touches `frontend/src/pages/Jobs.tsx` (and the jobs API in `src/eco_spec_tracker/` only if the exclude is cheaper server-side).

- **Exclude Survivalist and Self Improvement.** Literally everyone has those, so they carry no signal. Filter them out of the Professions and Specialties sections (and the progression rank lists if they surface there). A client-side filter in `Jobs.tsx` is fine, but if the jobs API already labels professions, excluding at `src/eco_spec_tracker/main.py` is cleaner.
- **Move "How the world got here" up.** The `jobs-progression` section (the temporal / trajectory layer) currently sits at the bottom under Professions, Specialties, and Players. Kai wants it higher. Move it up so the history reads before or alongside the current-state tables.
- **Compress to one heading, less prose.** The page opens with a long `.intro` paragraph plus multiple subsection titles. Kai wants at most one tier of heading + intro per page, and less prose site-wide. Cut the intro to one tight line, and flatten the `subsection-title` stack under "How the world got here" where it is redundant.

## Done when

Survivalist and Self Improvement are gone from the jobs surfaces, "How the world got here" reads above the current-state tables, and the page carries one heading tier with trimmed prose. `ward exec` test + lint gates green. Update `docs/FEATURES.md` if the section order or content materially changed.

Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.419.0).

— Claude (she/her), via ward agent

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent --driver claude` — container `engineer-claude-eco-app-94` on host `KAI-DESKTOP-TOWER` is carrying this issue (reserved 2026-07-07T06:13:51Z). Concurrent `ward agent` runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); `--force` overrides. **Do not comment on or edit this issue to steer the run while it is reserved.** The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a **new issue, dispatched fresh** — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494). <details><summary>run seed context — what this run is carrying (ward#609)</summary> - **Resolved:** `coilyco-gaming/eco-app#94` · branch `issue-94` · driver `claude` · workflow `direct-main` - **Run:** `engineer-claude-eco-app-94` · ward `v0.419.0` · dispatched `2026-07-07T06:13:51Z` - **Comment thread:** 0 included in the pre-flight read, 0 stripped (ward's own automated comments). **Issue body as seeded:** ``` Clean up the jobs page: drop the universal professions, move the history section up, and compress the prose. Filed from a batch of eco-app feedback Kai handed the director surface. Touches `frontend/src/pages/Jobs.tsx` (and the jobs API in `src/eco_spec_tracker/` only if the exclude is cheaper server-side). - **Exclude Survivalist and Self Improvement.** Literally everyone has those, so they carry no signal. Filter them out of the Professions and Specialties sections (and the progression rank lists if they surface there). A client-side filter in `Jobs.tsx` is fine, but if the jobs API already labels professions, excluding at `src/eco_spec_tracker/main.py` is cleaner. - **Move "How the world got here" up.** The `jobs-progression` section (the temporal / trajectory layer) currently sits at the bottom under Professions, Specialties, and Players. Kai wants it higher. Move it up so the history reads before or alongside the current-state tables. - **Compress to one heading, less prose.** The page opens with a long `.intro` paragraph plus multiple subsection titles. Kai wants at most one tier of heading + intro per page, and less prose site-wide. Cut the intro to one tight line, and flatten the `subsection-title` stack under "How the world got here" where it is redundant. ## Done when Survivalist and Self Improvement are gone from the jobs surfaces, "How the world got here" reads above the current-state tables, and the page carries one heading tier with trimmed prose. `ward exec` test + lint gates green. Update `docs/FEATURES.md` if the section order or content materially changed. ``` Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.419.0). </details> <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Author
Owner

WARD-OUTCOME: done - /jobs drops Survivalist & Self Improvement, leads with "How the world got here", and carries one heading tier with a one-line intro. Landed on main (f50f252).

Went smoothly, honestly. The interesting call was where to exclude the universal skills: the issue floated a server-side filter, but the professions come from a fixed map in mock_data (which doesn't even contain those two), the specialties are raw upstream names, and the progression rank lists come from a different Python package served on a separate endpoint. So a single client-side isUniversalSkill filter in Jobs.tsx was genuinely the cleanest — one place covering all four surfaces (professions, specialties, per-player rows, rank lists) instead of three server edits.

One thing that fought back mildly: prettifyEcoName("Self Improvement") inserts a second space before the capital I, so a naive lowercase match missed it — hence the normalize step that also collapses whitespace and strips a trailing "Skill" word, so it catches both display names and raw Eco ids like "SelfImprovement". I couldn't confirm the exact raw id form the live exporter emits, so that tolerance is a hedge rather than a verified match — worth a glance against real data.

Confident in the result: 86 frontend tests + 489 python tests green, lint/build/precommit all clean, added a dedicated exclusion test. Rough edge / possible follow-up: I left the per-player timeline events unfiltered (only the rank lists get scrubbed), and "flatten the subsection-title stack" I read narrowly — dropped only the redundant "Progression trends" heading and kept the list-identifying labels since they name distinct data. If Kai wanted those gone too, that's a quick follow-up.

WARD-OUTCOME: done - /jobs drops Survivalist & Self Improvement, leads with "How the world got here", and carries one heading tier with a one-line intro. Landed on main (f50f252). Went smoothly, honestly. The interesting call was where to exclude the universal skills: the issue floated a server-side filter, but the professions come from a fixed map in mock_data (which doesn't even contain those two), the specialties are raw upstream names, and the progression rank lists come from a *different* Python package served on a separate endpoint. So a single client-side `isUniversalSkill` filter in Jobs.tsx was genuinely the cleanest — one place covering all four surfaces (professions, specialties, per-player rows, rank lists) instead of three server edits. One thing that fought back mildly: `prettifyEcoName("Self Improvement")` inserts a second space before the capital I, so a naive lowercase match missed it — hence the normalize step that also collapses whitespace and strips a trailing "Skill" word, so it catches both display names and raw Eco ids like "SelfImprovement". I couldn't confirm the exact raw id form the live exporter emits, so that tolerance is a hedge rather than a verified match — worth a glance against real data. Confident in the result: 86 frontend tests + 489 python tests green, lint/build/precommit all clean, added a dedicated exclusion test. Rough edge / possible follow-up: I left the per-player timeline events unfiltered (only the rank lists get scrubbed), and "flatten the subsection-title stack" I read narrowly — dropped only the redundant "Progression trends" heading and kept the list-identifying labels since they name distinct data. If Kai wanted those gone too, that's a quick follow-up.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/eco-app#94
No description provided.