More work on rules, guidelines and FAQ

More links have to be checked as does formatting and other things. The
guidelines have had some typo fixes but more has to be done.
This commit is contained in:
Cody Boone Ferguson committed 2025-11-29 09:28:49 -08:00
1 parent 87d8c627a0
commit d49e2f2d9c
5 files changed
+307 -202

No files matched your search

+48 -48
View File
@@ -1,6 +1,6 @@
# IOCCC FAQ Table of Contents
This is FAQ version **29.01 2025-11-28**.
This is FAQ version **29.02 2025-11-29**.
## 0. [Entering the IOCCC: the bare minimum you need to know](#enter_questions)
@@ -26,7 +26,7 @@ This is FAQ version **29.01 2025-11-28**.
- **Q 1.4**: <a class="normal" href="#mkiocccentry_test">How can I check if my submission passes tests without having to answer questions?</a>
- **Q 1.5**: <a class="normal" href="#extra-files">What are extra files and how may I include additional files beyond the max allowed?</a>
- **Q 1.6**: <a class="normal" href="#ai">May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission?</a>
- **Q 1.7**: <a class="normal" href="#rule17">What are the details behind Rule 17 - Packaging?</a>
- **Q 1.7**: <a class="normal" href="#rule17">What are the details behind Rule 17 - use mkiocccentry?</a>
- **Q 1.8**: <a class="normal" href="#uuid">How can I avoid re-entering my UUID to mkiocccentry?</a>
- **Q 1.9**: <a class="normal" href="#submission_dir">How can I avoid having to move or delete my submission directory for the same workdir?</a>
- **Q 1.10**: <a class="normal" href="#download_submission">Can I download my submission tarball from the submit server?</a>
@@ -216,7 +216,7 @@ This toolkit is from the [mkiocccentry
repo](https://github.com/ioccc-src/mkiocccentry) and it is **required** that you
use it to package your submission. Not doing so puts you at a great risk of
violating the [Rules](next/rules.html) and in particular
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
Jump to: [top](#)
@@ -387,7 +387,7 @@ directory** will be created, with the name based on your IOCCC registration
username, which is **in the form of a UUID**, and submission number along with
the timestamp; see the [rules](next/rules.html) for more details on this, and in
particular
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
**IMPORTANT NOTE**: the tools that require other tools, `mkiocccentry(1)` and
`txzchk(1)`, will, as of version `2.0.2 2025-03-11`, search under `$PATH`. If
@@ -582,7 +582,7 @@ rounds; we look at the author name only if an entry wins. See the
- leaving the remark section empty (which would also indicate that you did not
use `mkiocccentry(1)`, as it requires it to not be of size 0, though if you only
include whitespace you would still be violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)).
Jump to: [top](#)
@@ -641,7 +641,7 @@ for more details.
See the
FAQ on "[Rule 17](#rule17)"
and
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
itself.
Do remember that if your submission requires different filenames, then you
@@ -858,12 +858,12 @@ itself is an extra file, meaning it counts **AS** an extra file.
This file does **NOT** need to pass the `txzchk(1)` tests; only your submission
tarball needs to pass these tests. However see below if you do do this.
Please pay careful attention to [Rule 17 - Packaging](next/rules.html#rule-17---packaging) and in
Please pay careful attention to [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry) and in
particular the part about the maximum number of files per
submission, which not only discusses the maximum
number of files but also specific rules you must follow
if you do include a tarball. Not following these points puts you at great risk
of violating [Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
of violating [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
Also, remember what the [guidelines](next/guidelines.html) say:
@@ -902,7 +902,7 @@ Jump to: [top](#)
<div id="rule17">
### Q 1.7: What are details behind Rule 17 - Packaging?
### Q 1.7: What are details behind Rule 17 - Use mkiocccentry?
</div>
@@ -925,7 +925,7 @@ contains **IMPORTANT** tools and libraries such as:
- `chksubmit(1)` (which uses `jparse(3)` and is a wrapper to `chkentry(1)`)
The above mentioned tools will help you verify that your submission
conforms to [Rule 17 - Packaging](next/rules.html#rule-17---packaging). Each of these tool has a `-h`
conforms to [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry). Each of these tool has a `-h`
option that provides command line help. For additional details of each tool, see
its man page, and in some cases, the [IOCCC guidelines](next/guidelines.html).
@@ -988,7 +988,7 @@ for help.
The `remarks.md` **MUST** be a **non**-empty file in markdown format
(`mkiocccentry(1)` only checks the file size but if you do not have any text in
it you still risk violating this rule). See also
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
and our
FAQ on "[remarks.md](#remarks_md)",
our
@@ -1096,7 +1096,7 @@ permissions and `mkiocccentry(1)` does this for you. In particular: directories
`-r-xr-xr-x` (i.e. `0555`); and all other files **MUST** be `-r--r--r--` (i.e.
`0444`). If any file or directory does not have the correct permissions, your
submission **WILL** be rejected for violating
[Rule 17 - Packaging](next/rules.html#rule17)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17)!
After `mkiocccentry(1)` creates the directories and copies the files with these
modes, it also verifies them after the fact and if they are not correct it is an
@@ -1124,7 +1124,7 @@ there should be no problem but if you were to package things manually it is
possible there could be a problem and this poses a big risk of violating
[Rule 4 - Files](next/rules.html#rule-4---files)
or
[Rule 17 - Packaging](next/rules.html#rule17).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17).
The `fnamchk(1)`, which `txzchk(1)` executes, will verify that the
@@ -1136,7 +1136,7 @@ These checks **MUST PASS**. If they do not you stand a significant chance of
having your submission rejected for violating
[Rule 4 - Files](next/rules.html#rule-4---files)
or
[Rule 17 - Packaging](next/rules.html#rule17).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17).
<div id="max-files">
#### Maximum number of files per submission
@@ -1179,7 +1179,7 @@ The `mkiocccentry(1)` tool uses the v7 format. For instance you might try:
**IMPORTANT**: where
[Rule 4 - Files](next/rules.html#rule-4---files),
and
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
and the tools from the latest
release of the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry)
conflict, the [IOCCC judges](judges.html) will use their best judgment which
@@ -1222,7 +1222,7 @@ FAQ on "[mkiocccentry repo bugs](#mkiocccentry_bugs)".
At the risk of stating the obvious: submissions that violate
[Rule 4 - Files](next/rules.html#rule-4---files),
or
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
**WILL BE REJECTED**, so **BE SURE** to use the latest release of the
[mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry), to form and test
your submission's xz compressed tarball. Do **NOT** assume you have the most
@@ -1594,7 +1594,7 @@ somehow, `txzchk(1)` will flag it as an error. When the judges run `txzchk(1)`
on the uploaded submission compressed tarball, if anything is wrong, for
instance if you "sneak in" any dot files or dot directories, the submission
**WILL BE REJECTED** for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
You may use whatever tools you need to develop your submission, including the
use of `git(1)` or `gh(1)`, just be sure that your submission code and your
@@ -2212,7 +2212,7 @@ the judges **ONLY**; use of this option to validate your submission puts you at
a great risk of violating
[Rule 4 - Files](next/rules.html#rule-4---files),
or
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!).
As an example, if your submission directory is
`00000000-0000-4000-0000-000000000000-3/` then you should run the following
@@ -2241,7 +2241,7 @@ FAQ on "[.info.json](#info_json)"
as well as
[Rule 4 - Files](next/rules.html#rule-4---files),
and
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
for more information.
**NOTE**: the `chksubmit(1)` tool invokes `chkentry(1)` but as a contestant you
@@ -2336,12 +2336,12 @@ In order of the file's contents we describe each required field, below:
* The IOCCC contestant ID used as a username in the form of **in the form of
a UUID** and submission number; see the [Rules](next/rules.html) for more details
on this, and in particular
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
**NOTE:** if the contest ID is **NOT** in this format then `fnamchk` will
report it as an **error** and your submission **WILL BE** rejected for
violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
- `tarball` (double quoted string)
* The xz compressed tarball filename.
@@ -2349,10 +2349,10 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** this **MUST** match the actual tarball's **filename** in order for
this to be valid. If there is a mismatch you stand a great risk of having
your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
Moreover, it is possible that `txzchk` will report a problem through
`fnamchk(1)` which also puts you at great risk of violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). The
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry). The
`txzchk(1)` tool will use the output of `fnamchk` to
obtain the correct directory _name_ in the tarball; if `fnamchk` fails to
validate your filename, or if you have the wrong directory name in the
@@ -2367,7 +2367,7 @@ In order of the file's contents we describe each required field, below:
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If
this is not the case you stand a great risk of having your submission
rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
- `author_count` (number)
* How many authors this submission has.
@@ -2432,7 +2432,7 @@ author(s) of the submission:
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If
this is not the case you stand a great risk of having your submission
rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
**NOTE:** an **affiliation** does **NOT** have any affect on whether you will win or not.
@@ -2519,7 +2519,7 @@ reported invalid by `chksubmit(1)`, your submission will almost certainly be
rejected for violating the [Rules](next/rules.html) and in particular
[Rule 4 - Files](next/rules.html#rule-4---files),
and
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
An obvious example where `chksubmit(1)` would fail to validate `.auth.json` is if
there is a mismatch of type in the JSON file with what is expected, for
@@ -2531,7 +2531,7 @@ that must be established as valid by `chksubmit(1)`) your submission would be
rejected for violating
[Rule 4 - Files](next/rules.html#rule-4---files),
and
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
and in particular
because `chksubmit(1)` would not validate the `.auth.json` file (and maybe other
things too).
@@ -2655,7 +2655,7 @@ In order of the file's contents we describe each required field, below:
* The IOCCC contestant ID used as a username in the form of **in the form of
a UUID** and submission number; see the [rules](next/rules.html) for more details
on this, and in particular
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
- `submit_slot` (number)
* The submission number.
@@ -2666,7 +2666,7 @@ In order of the file's contents we describe each required field, below:
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If
this is not the case you stand a great risk of having your submission
rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
- `title` (double quoted string)
* A short name (length >= 1 **THROUGH** `MAX_TITLE_LEN`, defined in
@@ -2676,7 +2676,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if this is **NOT** the case you stand a great risk of having your submission
rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
- `abstract` (double quoted string)
* A one line summary of your submission, with a length of 1 **THROUGH**
@@ -2688,7 +2688,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if your abstract is 0 in length or > the maximum abstract length you
stand a great risk of having your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
- `tarball` (double quoted string)
* The xz compressed tarball filename.
@@ -2696,10 +2696,10 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** this **MUST** match the actual tarball's **filename** in order for
this to be valid. If there is a mismatch you stand a great risk of having
your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
Moreover, it is possible that `txzchk` will report a problem through
`fnamchk(1)` which also puts you at great risk of violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
The `txzchk(1)` tool will use the output of `fnamchk` to
obtain the correct directory _name_ in the tarball; if `fnamchk` fails to
validate your filename, or if you have the wrong directory name in the
@@ -2734,7 +2734,7 @@ In order of the file's contents we describe each required field, below:
calculated size is **NOT**
violated but this is `true` then you stand a good chance of having your
submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
- `rule_2a_mismatch` (boolean)
* `true` if
@@ -2752,7 +2752,7 @@ In order of the file's contents we describe each required field, below:
calculated size is **NOT**
violated but this is `true` then you stand a good chance of having your
submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
- `highbit_warning` (boolean)
* `true` if `iocccsize` detects a high bit (unescaped octets with the high
@@ -2780,7 +2780,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file has no problems and this is `true` then
you stand a good chance of having your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
See the
FAQ on "[Makefile](#makefile)"
@@ -2791,7 +2791,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:**: if the `Makefile` file does **NOT** have an `all` rule then
you stand a good chance of having your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
See the
FAQ on "[Makefile](#makefile)"
@@ -2803,7 +2803,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file does **NOT** have an `all` rule and this
boolean is `true` then you stand a good chance of having your
submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
See the
FAQ on "[Makefile](#makefile)"
@@ -2815,7 +2815,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file does **NOT** have a `clean` rule and this
boolean is `true` then you stand a good chance of having your submission
rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
See the
FAQ on "[Makefile](#makefile)"
@@ -2827,7 +2827,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file does **NOT** have an `clobber` rule and this
boolean is `true` then you stand a good chance of having your submission
rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
See the
FAQ on "[Makefile](#makefile)"
@@ -2839,7 +2839,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file does **NOT** have a `try` rule and this
boolean is `true` then you stand a good chance of having your submission
rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
See the
FAQ on "[Makefile](#makefile)"
@@ -2865,7 +2865,7 @@ The `mkiocccentry(1)` tool will write it in this order:
**IMPORTANT:** if this is **NOT** the case you stand a
great chance of having your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
- `auth_JSON` (double quoted string)
* This `MUST` be `".auth.json"`, defined as `AUTH_JSON_FILENAME` in
@@ -2878,7 +2878,7 @@ The `mkiocccentry(1)` tool will write it in this order:
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
- `c_src` (double quoted string)
* This `MUST` be `"prog.c"`, defined as `PROG_C_FILENAME` in
@@ -2888,7 +2888,7 @@ The `mkiocccentry(1)` tool will write it in this order:
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
- `Makefile` (double quoted string)
* This `MUST` be `"Makefile"`, defined as `MAKEFILE_FILENAME` in
@@ -2901,7 +2901,7 @@ The `mkiocccentry(1)` tool will write it in this order:
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
- `remarks` (double quoted string)
* This `MUST` be `"remarks.md"`, defined as `REMARKS_FILENAME` in
@@ -2914,7 +2914,7 @@ The `mkiocccentry(1)` tool will write it in this order:
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
The `manifest` **array** also **OPTIONALLY** has one or more of the field:
@@ -2927,7 +2927,7 @@ The `manifest` **array** also **OPTIONALLY** has one or more of the field:
filenames are not unique, not POSIX plus + safe chars only, if they are the
wrong permission and various other things. In these cases you stand a great
risk of having your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
On the other hand, **ONLY** `mkiocccentry` will
verify that the files exist and can be read; `txzchk(1)` will **NOT** do
this for you as it only **LISTS** the tarball: it does **NOT** extract it.
@@ -2991,7 +2991,7 @@ out of range (see above for list). Two more examples would be if a field is
missing or if an unknown filed is in the file. In these cases (and any others
that must be established as valid by `chksubmit`) your submission would be
rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging),
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry),
and in particular
because `chksubmit` would not validate the `.info.json` file.