Phlogiston/Configuring

Each separate Phlogiston report can be defined and configured in a number of ways, as dictated by the following three configuration files. See Phlogiston/Data Loading Model for an explanation of how these configuration files are used in context.

_scope.py: Report configuration
Each team should use a separate Phlogiston report. Each report must have a configuration file, in the main phlogiston directory, named using the pattern:. The  should be a short (2-3 characters, hard limit of 6) unique identifier for this project.

Required Variables
The configuration file must contain these variables:

This is the report title displayed on the report page and charts. It should reflect the scope of tasks in the report, which is usually the name of the team responsible for the tasks.

Optional Variables
If set, the master burnup chart will show resolved tasks at zero prior to this date. This is to show progress from a recent point, such as the beginning of the quarter. Otherwise, a team that already has 500 resolved tasks at the beginning of the quarter will see their progress during the quarter rising from 500 (instead of 0), making it difficult to see recent progress. This does not affect per-tranche burnup charts. If a date is specified, the date is used. If the keyword default or True is specified, the beginning of the current quarter is used. If anything else is specified or this variable is not specified at all, no cutoff is applied.

Default_points are assigned to all unpointed stories. If not present, unpointed stories remain unpointed.

If True, then after all tasks are categorized, Phlogiston will rewrite the history of all tasks so that they appear to always have been in whatever category they are in on the most recent day. For example, if task 100 was categorized as Category A on March 10th, and changed to Category B on April 15th, and the report is run on May 1, task 100 will appear to always have been in Category B. Defaults to false.

If True, then Phlogiston will rewrite the history of all tasks so that they appear to always have had the point value that they have on the most recent day. Defaults to false.

These two variables determine which charts should be displayed, charts based on task count, charts based on task points, or both. Both default to True, so the configuration file should have neither (to get both count and points), or one of them set to False (to hide that type of chart).

This is the starting date for Phlogiston to import data from Phabricator. All data (tasks, transactions, projects, etc) before this date will be ignored. If not specified, this defaults to the beginning of the previous quarter (e.g., if today is April 5 2016, this will default to January 1 2016).

If specified, this is the Phabricator project Id that Phlogiston will use to select tasks for the Status Report. Even if specified, this will not be used if status_report_start is invalid or missing. Phlogiston only supports status reports for a single Phabricator project; if there are several to chose from, pick the project which contains "the tasks we are hoping to complete over this reporting period", which for Scrum will be the sprint backlog.

If specified, Phlogiston will use this information while creating the Status Report. If it is a valid date, that will be used. If it is an integer, that will be used as the number of days before the present (this will give poor results if underlying data is not current). If the keyword default or true is specified, it will use the start of the current quarter. For Scrum, put in the date the last scrum started. Otherwise, or if not specified, the Status Report will not be generated.

_recategorization.csv: Categories
The file  determines which tasks from Phabricator will be incorporated into the report and how they will be categorized. See col_recategorization.csv for an example.

Each row (except ProjectsByWildcard) in the file is one category. The category rules are applied in order, so that each task is categorized in the first category that it matches. Phlogiston reports on how it has interpreted the file (example). ProjectsByWildcard will generate multiple categories from one row.

The same rule cannot be used twice; this can happen inadvertantly when a wildcard creates a rule and then another entry creates the same rule. In this case, the second generated rule will be ignored. For this purpose, rules are the same if they have the same CategoryRule, ProjectID, and MatchString after wildcards are resolved.

CategoryRule
This determines how the category row is interpreted and applied. Must be one of these keywords:
 * ProjectByID
 * Matches all tasks are members of the specified project, which is specified by ID.
 * ProjectByName
 * Matches all tasks that are members of the specified project, which is specified by the exact Phabricator name.
 * ProjectsByWildcard
 * Finds all Phabricator projects whose names match the Matchstring, which is treated like a substring. E.g., "iOS-foobar" will match "iOS-foobar", "iOS-foobar-baz", and "foo-iOS-foobar", but not "iOS-foo-foobar".
 * Each matching project is treated as if it were a separate "ProjectByName" category.
 * Titles are copied from project names in Phabricator, and any Title specified in the row is ignored.
 * Intersection
 * Matches all tasks that are members of all of the specified project IDs for this row.
 * ProjectColumn
 * Matches all tasks that are members of the specified project ID(s) and belong to a Phabricator column with the same name as the MatchString.
 * MatchString is treated as a substring for column name matching, so "TR-0" will match "TR-0 Interrupt".
 * ParentTask
 * Matches all tasks that
 * are members of the specified project ID(s)
 * AND are descendents (children, grandchildren, etc) of a task
 * which is in the "Category" or "Goal" Phabricator projects (hard-coded to project IDs 1656 and 2169)
 * AND whose title matches the MatchString.
 * The tasks, all tasks in the family tree, and the category task must all be in the list of specified project IDs in this row. (e.g., if the category task is in project 'foo', and a child task is in project 'bar' and not in 'foo', and a grandchild task is in project 'foo', the grandchild task will not match under this rule.)

ID
For ProjectByID, ProjectColumn, or ParentTask, one valid Phabricator project IDs (not PHIDs). For Intersection, two Phabricator project IDs, separated by spaces. For ProjectByName or ProjectsByWildcard, leave blank.

MatchString
A character string to be used for matching as determined by the CategoryRule. Case-sensitive. For ProjectByID or Intersection, leave blank.

Title
The display title of the category, for use in charts and graphs. For ProjectsByWildcard, leave blank.

Display
Whether or not this category should be shown. If false, will be hidden from most reports.