FM27: add Staff.job, and include people with no contract in staff()
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
Research direction
Start by reading the staff() implementation and how it represents contract rows and coded values; compare its output with the FM27 behavior described here. Check how current jobs and people without contracts can be distinguished, and investigate the unresolved job codes and past-job rule. Done means staff rows include a job, retain only each person's current job, and include club people without contracts with their team and job.
Written by the indexing model from the issue text.
Description
No save files or real data
- I have not attached or linked a save file, screenshot, or any real player data
What is missing
staff() has no job field, and it leaves out people who work for a club with no contract, such as the chairperson and directors. On FM27, a person's stored contract rows can also describe past jobs.
How the results compare with the game
The comparisons below used a local build, because 0.8.0 refuses this on FM27. I compared one club with the All Staff screen.
- All 25 people on the screen appear, each with the right job and the right team, including the board and the under-18 staff.
- People with no contract appear with
has_contractfalse. - No person has more than one row, across all 12,032 rows. Before I dropped past jobs, some teams had several managers.
- Of the 472 first teams in league tables, 370 have a manager. 93 have no staff in the save at all. The other 9 have staff but no manager, and 2 of those have an open vacancy.
Suggested approach
Staff.job: add aCodedValuewith aStaffJobenum, on FM27 first.- Past jobs: keep only the row of the current job for each person.
- No contract: add a pass for club people with no contract, and keep
team_idand the job code on those rows.
What remains uncertain
- I checked one career, from the start of the first season to early August. I will send the saves and matching screens by email.
- Job labels come from one club's screen. Codes 26, 46, 58, 44, 62, 66, 70 and 86 are common on other clubs and have no label yet. One person hired after that screen has one of these codes, so I can check it in the game if that helps.
- The past-job rule rests on this career. I have not seen it across a season change.
- I do not know why 7 of those 9 first teams have no manager and no vacancy. They may be real gaps between appointments, or a current job this rule drops.
Versions
- fmsave 0.8.0 (
mainat 418c837), Python 3.13.13, macOS 27.2 - FM27 build
27.0.0+2486695
- Dominant language
- Python
- Stars
- 28
- Forks
- 8
- Avg merge
- 42m
- Merged PRs (30d)
- 33
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from rhiever/fmsave
-
good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 1 day
-
good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
training_man: 27.0.1+2494687 writes a non-zero block trailer, training/mentoring readers fail closedOpen
Difficulty 4/5 1-2 days Newbie friendliness 49/100
rhiever/fmsave#82 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
rhiever/fmsave#77 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 43/100
rhiever/fmsave#75 · 2 comments ·
Maintainers usually reply within 1 day
Similar issues
-
needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
gke-labs/kube-agents#5671 ·
Maintainers usually reply within 1 day
-
docs(auth): Method B step 4 should tell users to tick "Use this client for an AI-powered agent"Opendocumentation next-release v0.9.6
Difficulty 1/5 Under an hour Newbie friendliness 88/100
khuisman/mcp-gee-sweet#1446 ·
Maintainers usually reply within 1 day
-
model:sonnet runtime:claude security size:S
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
FootprintAI/Containarium#3671 ·
Maintainers usually reply within 1 day
-
HolidayBase: reassigning `language` does not re-initialize translations or re-populate holidaysPossibly taken @shikhabhadoria claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
vacanza/holidays#4116 · 1 comment ·
Maintainers usually reply within 1 day
-
bug CLI exec
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day