@forwardimpact/outpost 3.11.0 → 3.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/fit-outpost.js +3 -2
- package/package.json +4 -4
- package/src/agent-path.js +10 -6
- package/src/agent-runner.js +28 -24
- package/src/index.js +2 -3
- package/src/kb-manager.js +21 -19
- package/src/outpost.js +37 -33
- package/src/posture.js +3 -3
- package/src/privilege.js +11 -11
- package/src/scheduler.js +14 -12
- package/src/socket-server.js +19 -18
- package/src/spawn-env.js +7 -6
- package/src/state-manager.js +2 -2
- package/templates/.claude/agents/chief-of-staff.md +22 -22
- package/templates/.claude/agents/concierge.md +19 -17
- package/templates/.claude/agents/head-hunter.md +27 -26
- package/templates/.claude/agents/librarian.md +17 -16
- package/templates/.claude/agents/postman.md +19 -18
- package/templates/.claude/agents/recruiter.md +31 -27
- package/templates/.claude/skills/anarlog-follow/SKILL.md +50 -49
- package/templates/.claude/skills/anarlog-follow/references/coaching.md +22 -21
- package/templates/.claude/skills/anarlog-follow/scripts/follow.mjs +4 -4
- package/templates/.claude/skills/anarlog-process/SKILL.md +35 -32
- package/templates/.claude/skills/anarlog-process/references/extraction.md +26 -22
- package/templates/.claude/skills/anarlog-process/references/sessions.md +10 -10
- package/templates/.claude/skills/anarlog-process/scripts/scan.mjs +10 -9
- package/templates/.claude/skills/anarlog-trim/SKILL.md +43 -40
- package/templates/.claude/skills/candidate-report/SKILL.md +30 -28
- package/templates/.claude/skills/candidate-report/references/report-template.html +10 -10
- package/templates/.claude/skills/candidate-report/references/report.css +4 -4
- package/templates/.claude/skills/candidate-report/references/rubric.md +15 -14
- package/templates/.claude/skills/candidate-report/scripts/render-pdf.mjs +2 -2
- package/templates/.claude/skills/changelog/SKILL.md +55 -50
- package/templates/.claude/skills/deck-create/SKILL.md +30 -30
- package/templates/.claude/skills/deck-create/references/slide.css +4 -4
- package/templates/.claude/skills/deck-create/scripts/convert-to-pdf.mjs +6 -6
- package/templates/.claude/skills/deck-review/SKILL.md +59 -57
- package/templates/.claude/skills/deck-review/assets/slide-annotator.js +58 -49
- package/templates/.claude/skills/deck-summarize/SKILL.md +49 -43
- package/templates/.claude/skills/deck-summarize/references/brief-template.md +4 -3
- package/templates/.claude/skills/deck-summarize/scripts/extract-pptx.mjs +8 -7
- package/templates/.claude/skills/doc-collab/SKILL.md +25 -25
- package/templates/.claude/skills/doc-create/SKILL.md +21 -20
- package/templates/.claude/skills/doc-create/scripts/convert-to-pdf.mjs +6 -6
- package/templates/.claude/skills/draft-emails/SKILL.md +37 -33
- package/templates/.claude/skills/draft-emails/references/template.md +2 -2
- package/templates/.claude/skills/draft-emails/scripts/scan-emails.mjs +5 -4
- package/templates/.claude/skills/draft-emails/scripts/send-email.mjs +11 -9
- package/templates/.claude/skills/extract-entities/SKILL.md +65 -65
- package/templates/.claude/skills/extract-entities/references/TEMPLATES.md +5 -5
- package/templates/.claude/skills/extract-entities/references/conditions.md +14 -13
- package/templates/.claude/skills/extract-entities/references/content.md +10 -9
- package/templates/.claude/skills/extract-entities/references/links.md +5 -5
- package/templates/.claude/skills/extract-entities/references/recruitment.md +19 -18
- package/templates/.claude/skills/extract-entities/references/resolution.md +13 -13
- package/templates/.claude/skills/extract-entities/references/sources.md +8 -8
- package/templates/.claude/skills/extract-entities/references/templates-conditions.md +2 -2
- package/templates/.claude/skills/extract-entities/references/templates-priorities.md +2 -2
- package/templates/.claude/skills/extract-entities/scripts/state.mjs +9 -8
- package/templates/.claude/skills/meeting-prep/SKILL.md +25 -24
- package/templates/.claude/skills/organize-files/SKILL.md +24 -22
- package/templates/.claude/skills/organize-files/scripts/organize-by-type.mjs +5 -4
- package/templates/.claude/skills/organize-files/scripts/summarize.mjs +4 -4
- package/templates/.claude/skills/person-identify/SKILL.md +24 -22
- package/templates/.claude/skills/person-identify/scripts/identify.sh +17 -17
- package/templates/.claude/skills/person-lookup/SKILL.md +28 -29
- package/templates/.claude/skills/person-lookup/scripts/lookup.sh +19 -16
- package/templates/.claude/skills/req-assess/SKILL.md +27 -27
- package/templates/.claude/skills/req-assess/references/interview-template.md +1 -1
- package/templates/.claude/skills/req-assess/references/panel-template.md +3 -2
- package/templates/.claude/skills/req-assess/references/rubric.md +13 -13
- package/templates/.claude/skills/req-decide/SKILL.md +28 -25
- package/templates/.claude/skills/req-decide/references/rubric.md +11 -10
- package/templates/.claude/skills/req-forget/SKILL.md +28 -26
- package/templates/.claude/skills/req-forget/references/classify.md +13 -13
- package/templates/.claude/skills/req-forget/references/locations.md +2 -2
- package/templates/.claude/skills/req-forget/references/report-template.md +1 -1
- package/templates/.claude/skills/req-scan/SKILL.md +21 -22
- package/templates/.claude/skills/req-scan/references/fallbacks.md +9 -9
- package/templates/.claude/skills/req-scan/references/filters.md +13 -13
- package/templates/.claude/skills/req-scan/references/sources.md +7 -7
- package/templates/.claude/skills/req-scan/references/state.md +1 -1
- package/templates/.claude/skills/req-scan/scripts/state.mjs +3 -2
- package/templates/.claude/skills/req-screen/SKILL.md +31 -29
- package/templates/.claude/skills/req-screen/references/rubric.md +18 -18
- package/templates/.claude/skills/req-screen/references/template.md +4 -4
- package/templates/.claude/skills/req-track/SKILL.md +40 -40
- package/templates/.claude/skills/req-track/references/fields.md +19 -18
- package/templates/.claude/skills/req-track/references/signals.md +12 -12
- package/templates/.claude/skills/req-track/references/statuses.md +3 -2
- package/templates/.claude/skills/req-track/references/templates.md +4 -4
- package/templates/.claude/skills/req-workday/SKILL.md +24 -24
- package/templates/.claude/skills/req-workday/references/status-mapping.md +5 -5
- package/templates/.claude/skills/req-workday/references/templates.md +13 -13
- package/templates/.claude/skills/req-workday/references/xlsx-format.md +7 -7
- package/templates/.claude/skills/req-workday/scripts/parse-workday.mjs +19 -17
- package/templates/.claude/skills/send-chat/SKILL.md +47 -43
- package/templates/.claude/skills/sync-apple-calendar/SKILL.md +20 -19
- package/templates/.claude/skills/sync-apple-calendar/references/SCHEMA.md +7 -7
- package/templates/.claude/skills/sync-apple-calendar/scripts/query.mjs +6 -6
- package/templates/.claude/skills/sync-apple-calendar/scripts/sync.mjs +9 -8
- package/templates/.claude/skills/sync-apple-mail/SKILL.md +17 -14
- package/templates/.claude/skills/sync-apple-mail/references/SCHEMA.md +10 -10
- package/templates/.claude/skills/sync-apple-mail/scripts/parse-emlx.mjs +9 -9
- package/templates/.claude/skills/sync-apple-mail/scripts/sync-helpers.mjs +16 -13
- package/templates/.claude/skills/sync-apple-mail/scripts/sync.mjs +3 -3
- package/templates/.claude/skills/sync-teams/SKILL.md +43 -43
- package/templates/.claude/skills/sync-teams/scripts/idb-reader.mjs +22 -21
- package/templates/.claude/skills/sync-teams/scripts/leveldb-reader.mjs +4 -4
- package/templates/.claude/skills/sync-teams/scripts/sync.mjs +4 -4
- package/templates/.claude/skills/upstream-instructions/SKILL.md +39 -40
- package/templates/.claude/skills/upstream-instructions/references/examples.md +2 -2
- package/templates/CLAUDE.md +40 -37
|
@@ -3,17 +3,19 @@
|
|
|
3
3
|
# input (an email address, or a first / last / full name) and print their
|
|
4
4
|
# directory record(s).
|
|
5
5
|
#
|
|
6
|
-
# Sibling to `person-identify
|
|
6
|
+
# Sibling to `person-identify`. Use it for *other* people. Do not use it for
|
|
7
|
+
# the current user:
|
|
7
8
|
# - Searches the Global Catalog (port 3268, base "") so it reaches EVERY
|
|
8
|
-
# domain in the forest from a single ticket
|
|
9
|
-
#
|
|
9
|
+
# domain in the forest from a single ticket. It finds colleagues in other
|
|
10
|
+
# regions. It does not stop at your own domain.
|
|
10
11
|
# - Uses Active Directory ANR (Ambiguous Name Resolution), so one filter
|
|
11
12
|
# matches an email, a login, or any part of a name.
|
|
12
|
-
# - Handles 0, 1, or many matches
|
|
13
|
-
# accounts so an internal employee
|
|
14
|
-
# - NEVER writes the identity cache
|
|
13
|
+
# - Handles 0, 1, or many matches. Flags external Contacts / vendor
|
|
14
|
+
# accounts so you never confuse an internal employee with an outside one.
|
|
15
|
+
# - NEVER writes the identity cache. This is a throwaway lookup.
|
|
15
16
|
#
|
|
16
|
-
# Auth uses SASL/GSSAPI against the existing Kerberos ticket
|
|
17
|
+
# Auth uses SASL/GSSAPI against the existing Kerberos ticket. It needs no
|
|
18
|
+
# password.
|
|
17
19
|
#
|
|
18
20
|
# Robustness note: under load the directory intermittently returns an entry's
|
|
19
21
|
# DN with NO attributes (exit 0, no error). Every attribute fetch below retries
|
|
@@ -22,9 +24,10 @@
|
|
|
22
24
|
set -u
|
|
23
25
|
|
|
24
26
|
# Org-specific: substring of the DN's OU that marks external/vendor *user*
|
|
25
|
-
# accounts
|
|
26
|
-
# Empty by default
|
|
27
|
-
# or "OU=External", to label those accounts as
|
|
27
|
+
# accounts. The script detects external Contact objects generically through
|
|
28
|
+
# objectClass. Empty by default. Set it to your directory's convention, e.g.
|
|
29
|
+
# "OU=Contractors" or "OU=External", to label those accounts as
|
|
30
|
+
# "User (external / vendor)".
|
|
28
31
|
VENDOR_OU_PATTERN=""
|
|
29
32
|
|
|
30
33
|
QUERY="$*"
|
|
@@ -44,7 +47,7 @@ dom=$(printf '%s' "$realm" | tr '[:upper:]' '[:lower:]')
|
|
|
44
47
|
dc=$(dig +short SRV "_ldap._tcp.dc._msdcs.$dom" | awk 'NR==1{print $4}' | sed 's/\.$//')
|
|
45
48
|
[ -z "$dc" ] && dc=$(dig +short SRV "_ldap._tcp.$dom" | awk 'NR==1{print $4}' | sed 's/\.$//')
|
|
46
49
|
if [ -z "$dc" ]; then
|
|
47
|
-
echo "Could not find a domain controller for $dom
|
|
50
|
+
echo "Could not find a domain controller for $dom with DNS SRV." >&2
|
|
48
51
|
exit 1
|
|
49
52
|
fi
|
|
50
53
|
|
|
@@ -53,7 +56,7 @@ GC="ldap://$dc:3268"
|
|
|
53
56
|
ATTRS="displayName givenName sn company title department employeeID mail telephoneNumber physicalDeliveryOfficeName objectClass manager"
|
|
54
57
|
MAX_SHOW=12 # cap detailed output for very broad name matches
|
|
55
58
|
|
|
56
|
-
# Pull one attribute out of an LDIF record (passed as $2)
|
|
59
|
+
# Pull one attribute out of an LDIF record (passed as $2). Decode base64 (::).
|
|
57
60
|
field() { # $1=attr $2=record
|
|
58
61
|
local attr="$1" line
|
|
59
62
|
line=$(printf '%s\n' "$2" | grep -m1 -E "^$attr:: ?|^$attr: ") || return 0
|
|
@@ -63,13 +66,13 @@ field() { # $1=attr $2=record
|
|
|
63
66
|
esac
|
|
64
67
|
}
|
|
65
68
|
|
|
66
|
-
# List
|
|
69
|
+
# List the DNs that match a filter. Request no attributes → reliable under load.
|
|
67
70
|
dns_for() { # $1=filter
|
|
68
71
|
ldapsearch -Y GSSAPI -LLL -o ldif-wrap=no -H "$GC" -b "" "$1" 1.1 2>/dev/null \
|
|
69
72
|
| sed -n 's/^dn: //p'
|
|
70
73
|
}
|
|
71
74
|
|
|
72
|
-
# Fetch one entry's attributes by DN
|
|
75
|
+
# Fetch one entry's attributes by DN. Retry past the silent DN-only response.
|
|
73
76
|
fetch() { # $1=dn
|
|
74
77
|
local dn="$1" out tries=0
|
|
75
78
|
while [ "$tries" -lt 4 ]; do
|
|
@@ -100,7 +103,7 @@ kind_of() { # $1=record $2=dn
|
|
|
100
103
|
}
|
|
101
104
|
|
|
102
105
|
# 2. Primary search (ANR), then a substring fallback if it finds nothing.
|
|
103
|
-
# (Portable array fill
|
|
106
|
+
# (Portable array fill. macOS ships bash 3.2, which has no `mapfile`.)
|
|
104
107
|
read_dns() { # $1=filter -> populates global DNS array
|
|
105
108
|
DNS=()
|
|
106
109
|
local line
|
|
@@ -138,7 +141,7 @@ if [ "${#DNS[@]}" -eq 1 ]; then
|
|
|
138
141
|
fi
|
|
139
142
|
|
|
140
143
|
# 3b. Several matches → a compact disambiguation list (no per-row manager call).
|
|
141
|
-
echo "${#DNS[@]} matches for \"$QUERY\"
|
|
144
|
+
echo "${#DNS[@]} matches for \"$QUERY\". Narrow with an email for an exact hit:"
|
|
142
145
|
echo
|
|
143
146
|
shown=0
|
|
144
147
|
for dn in "${DNS[@]}"; do
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: req-assess
|
|
3
3
|
description: >
|
|
4
|
-
Analyze interview transcripts against the agent-aligned engineering standard
|
|
5
|
-
|
|
6
|
-
per-interview assessments and panel briefs for
|
|
4
|
+
Analyze interview transcripts against the agent-aligned engineering standard.
|
|
5
|
+
Update skill and behaviour ratings with observed evidence. Produces
|
|
6
|
+
per-interview assessments and panel briefs for later interview stages.
|
|
7
7
|
Use when transcript files appear in a candidate's folder.
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -11,7 +11,7 @@ description: >
|
|
|
11
11
|
|
|
12
12
|
Analyze a candidate's interview transcripts. Update their skill and behaviour
|
|
13
13
|
profile with **observed** (not claimed) evidence. Interview evidence is
|
|
14
|
-
higher-fidelity than CV evidence
|
|
14
|
+
higher-fidelity than CV evidence. It confirms or contradicts the screening
|
|
15
15
|
assessment.
|
|
16
16
|
|
|
17
17
|
This is **Stage 2** of the three-stage hiring pipeline:
|
|
@@ -25,14 +25,14 @@ This is **Stage 2** of the three-stage hiring pipeline:
|
|
|
25
25
|
- A new `transcript-*.md` file appears in `Knowledge/Candidates/{Name}/`.
|
|
26
26
|
- The user asks to analyze an interview or debrief.
|
|
27
27
|
- The user asks to prepare a panel brief.
|
|
28
|
-
- The concierge agent processes
|
|
28
|
+
- The concierge agent processes an Anarlog interview recording.
|
|
29
29
|
|
|
30
30
|
## Prerequisites
|
|
31
31
|
|
|
32
32
|
- `fit-pathway` CLI installed.
|
|
33
33
|
- At least one transcript in `Knowledge/Candidates/{Name}/`.
|
|
34
|
-
- `screening.md` should exist
|
|
35
|
-
regardless
|
|
34
|
+
- `screening.md` should exist. If it is missing, run `req-screen` first.
|
|
35
|
+
Proceed regardless.
|
|
36
36
|
|
|
37
37
|
## Inputs
|
|
38
38
|
|
|
@@ -50,15 +50,15 @@ This is **Stage 2** of the three-stage hiring pipeline:
|
|
|
50
50
|
<do_confirm_checklist goal="Verify the assessment is grounded in transcript
|
|
51
51
|
evidence">
|
|
52
52
|
|
|
53
|
-
- [ ]
|
|
54
|
-
- [ ]
|
|
55
|
-
- [ ]
|
|
56
|
-
- [ ]
|
|
57
|
-
- [ ]
|
|
58
|
-
- [ ]
|
|
59
|
-
suggested questions to remaining gaps.
|
|
60
|
-
- [ ]
|
|
61
|
-
- [ ]
|
|
53
|
+
- [ ] Cite a specific moment from the transcript for every skill re-rating.
|
|
54
|
+
- [ ] Base behaviour assessments on observed actions. Ignore claimed traits.
|
|
55
|
+
- [ ] Assess the level with standard progression criteria. Ignore gut feel.
|
|
56
|
+
- [ ] Attribute interviewer observations by name.
|
|
57
|
+
- [ ] Distinguish confirmed strengths from new concerns.
|
|
58
|
+
- [ ] Write the panel brief (if created) for non-technical readers. Tie the
|
|
59
|
+
suggested questions to the remaining gaps.
|
|
60
|
+
- [ ] Update the brief's Pipeline section, links, and Status.
|
|
61
|
+
- [ ] **Never** update the Gender field from interview observations.
|
|
62
62
|
|
|
63
63
|
</do_confirm_checklist>
|
|
64
64
|
|
|
@@ -79,8 +79,8 @@ bunx fit-pathway skill {skill_id}
|
|
|
79
79
|
bunx fit-pathway behaviour --list
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
-
If screening recommended a different
|
|
83
|
-
J090), load **both** for comparison.
|
|
82
|
+
If screening recommended a level different from the original target (e.g. J100
|
|
83
|
+
→ J090), load **both** for comparison.
|
|
84
84
|
|
|
85
85
|
### 3. Re-rate skills
|
|
86
86
|
|
|
@@ -90,8 +90,8 @@ moment, quote, or observation per change.
|
|
|
90
90
|
|
|
91
91
|
### 4. Re-rate behaviours
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
Interviews assess behaviours better than CVs. Behaviours describe how someone
|
|
94
|
+
acts. They do not describe what someone did. Use the
|
|
95
95
|
[behaviour signals](references/rubric.md#behaviour-signals) and the
|
|
96
96
|
[behaviour maturity scale](references/rubric.md#behaviour-maturity-scale).
|
|
97
97
|
|
|
@@ -105,23 +105,23 @@ Apply the [level signals](references/rubric.md#level-signals).
|
|
|
105
105
|
|
|
106
106
|
### 6. Write the interview assessment
|
|
107
107
|
|
|
108
|
-
Save to `Knowledge/Candidates/{Name}/interview-{date}.md`
|
|
108
|
+
Save to `Knowledge/Candidates/{Name}/interview-{date}.md` with
|
|
109
109
|
[references/interview-template.md](references/interview-template.md). Include
|
|
110
|
-
only skills with new evidence
|
|
110
|
+
only skills with new evidence. Do not repeat the full matrix.
|
|
111
111
|
|
|
112
112
|
### 7. Generate the panel brief (if applicable)
|
|
113
113
|
|
|
114
|
-
When more interview stages
|
|
114
|
+
When you plan more interview stages (panel, technical, etc.), pull question
|
|
115
115
|
candidates:
|
|
116
116
|
|
|
117
117
|
```bash
|
|
118
118
|
bunx fit-pathway interview {discipline} {level} --track={track}
|
|
119
119
|
```
|
|
120
120
|
|
|
121
|
-
Save `Knowledge/Candidates/{Name}/panel.md`
|
|
122
|
-
[references/panel-template.md](references/panel-template.md).
|
|
123
|
-
next-stage interviewers, often non-engineers
|
|
124
|
-
suggested questions to remaining gaps.
|
|
121
|
+
Save `Knowledge/Candidates/{Name}/panel.md` with
|
|
122
|
+
[references/panel-template.md](references/panel-template.md). The audience is
|
|
123
|
+
next-stage interviewers, often non-engineers. Explain without jargon. Tie the
|
|
124
|
+
suggested questions to the remaining gaps.
|
|
125
125
|
|
|
126
126
|
### 8. Update the candidate brief
|
|
127
127
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Reference template for `req-assess` Step 6. Save to
|
|
4
4
|
`Knowledge/Candidates/{Name}/interview-{date}.md`. Include only skills the
|
|
5
|
-
interview produced new evidence for
|
|
5
|
+
interview produced new evidence for. Do not repeat the full matrix.
|
|
6
6
|
|
|
7
7
|
```markdown
|
|
8
8
|
# Interview Assessment — {Full Name}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Panel Brief Template
|
|
2
2
|
|
|
3
3
|
Reference template for `req-assess` Step 7. Save to
|
|
4
|
-
`Knowledge/Candidates/{Name}/panel.md`.
|
|
5
|
-
often non-engineers
|
|
4
|
+
`Knowledge/Candidates/{Name}/panel.md`. The audience is **next-stage
|
|
5
|
+
interviewers, often non-engineers**. Explain without jargon. Focus on
|
|
6
|
+
behaviours and scope.
|
|
6
7
|
|
|
7
8
|
```markdown
|
|
8
9
|
# Panel Brief — {Full Name}
|
|
@@ -13,17 +13,17 @@ Reference data for `req-assess` Steps 1, 3, 4, and 5.
|
|
|
13
13
|
| **Behaviour observations** | How the candidate acted under pressure, with others |
|
|
14
14
|
| **Self-identified strengths** | What the candidate claims they're good at |
|
|
15
15
|
| **Self-identified gaps** | What the candidate acknowledges as growth areas |
|
|
16
|
-
| **Red flags** | Contradictions with CV,
|
|
16
|
+
| **Red flags** | Contradictions with CV, patterns of concern |
|
|
17
17
|
| **Interviewer feedback** | Direct quotes or observations from interviewers |
|
|
18
18
|
| **Level signals** | Autonomy, scope, complexity demonstrated in responses |
|
|
19
19
|
| **Track signals** | Business immersion vs. platform thinking in their answers |
|
|
20
20
|
|
|
21
21
|
## Skill re-rating
|
|
22
22
|
|
|
23
|
-
**Interview evidence outranks CV evidence.**
|
|
24
|
-
`practitioner` but demonstrated `foundational
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
**Interview evidence outranks CV evidence.** Re-rate a candidate who claimed
|
|
24
|
+
`practitioner` but demonstrated `foundational`. The reverse also applies. Every
|
|
25
|
+
re-rating cites a specific moment, quote, or observation from the transcript.
|
|
26
|
+
The phrase "seemed strong" is not evidence.
|
|
27
27
|
|
|
28
28
|
| Interview evidence | Rating adjustment |
|
|
29
29
|
| ------------------------------------------- | ------------------------------------- |
|
|
@@ -36,13 +36,13 @@ from the transcript — "seemed strong" is not evidence.
|
|
|
36
36
|
|
|
37
37
|
## Behaviour signals
|
|
38
38
|
|
|
39
|
-
| Behaviour | Interview evidence
|
|
40
|
-
| -------------------------- |
|
|
41
|
-
| Own the Outcome | Takes responsibility, doesn't deflect, drives to resolution
|
|
42
|
-
| Think in Systems | Considers second-order effects, trade-offs, system boundaries
|
|
43
|
-
| Communicate with Precision | Clear explanations, appropriate detail, listens actively
|
|
44
|
-
| Be Polymath Oriented | Draws on diverse knowledge, makes unexpected connections
|
|
45
|
-
| Don't Lose Your Curiosity | Asks good questions, explores alternatives, admits not
|
|
39
|
+
| Behaviour | Interview evidence |
|
|
40
|
+
| -------------------------- | ------------------------------------------------------------------------ |
|
|
41
|
+
| Own the Outcome | Takes responsibility, doesn't deflect, drives to resolution |
|
|
42
|
+
| Think in Systems | Considers second-order effects, trade-offs, system boundaries |
|
|
43
|
+
| Communicate with Precision | Clear explanations, appropriate detail, listens actively |
|
|
44
|
+
| Be Polymath Oriented | Draws on diverse knowledge, makes unexpected connections |
|
|
45
|
+
| Don't Lose Your Curiosity | Asks good questions, explores alternatives, admits what they do not know |
|
|
46
46
|
|
|
47
47
|
## Behaviour maturity scale
|
|
48
48
|
|
|
@@ -59,7 +59,7 @@ from the transcript — "seemed strong" is not evidence.
|
|
|
59
59
|
| Interview signal | Implication |
|
|
60
60
|
| --------------------------------------------------------- | ------------------------------ |
|
|
61
61
|
| Needed guidance to structure their approach | Level may be lower than est. |
|
|
62
|
-
| Self-directed
|
|
62
|
+
| Self-directed, made sound trade-offs independently | Level estimate confirmed |
|
|
63
63
|
| Mentored or coached others during the exercise | Level may be higher than est. |
|
|
64
64
|
| Struggled with complexity appropriate to the target level | Downgrade |
|
|
65
65
|
| Interviewer explicitly suggested a different level | Strong signal — weight heavily |
|
|
@@ -10,7 +10,7 @@ description: >
|
|
|
10
10
|
# Hiring Decision
|
|
11
11
|
|
|
12
12
|
Synthesize all available evidence for a candidate into a final hiring
|
|
13
|
-
recommendation. This is the culmination of the hiring pipeline
|
|
13
|
+
recommendation. This is the culmination of the hiring pipeline. Every prior
|
|
14
14
|
assessment feeds in.
|
|
15
15
|
|
|
16
16
|
This is **Stage 3** of the three-stage pipeline:
|
|
@@ -42,7 +42,7 @@ This is **Stage 3** of the three-stage pipeline:
|
|
|
42
42
|
manager, domain lead). Check the `**Status:**` field to distinguish active
|
|
43
43
|
from historical reqs.
|
|
44
44
|
- `Knowledge/Priorities/*.md` — strategic context.
|
|
45
|
-
- Other active candidates at the same level — relative
|
|
45
|
+
- Other active candidates at the same level — relative position.
|
|
46
46
|
|
|
47
47
|
## Outputs
|
|
48
48
|
|
|
@@ -53,17 +53,20 @@ This is **Stage 3** of the three-stage pipeline:
|
|
|
53
53
|
<do_confirm_checklist goal="Verify the recommendation is grounded and
|
|
54
54
|
audit-ready">
|
|
55
55
|
|
|
56
|
-
- [ ]
|
|
57
|
-
- [ ]
|
|
58
|
-
- [ ]
|
|
59
|
-
- [ ]
|
|
60
|
-
|
|
61
|
-
- [ ]
|
|
62
|
-
- [ ]
|
|
63
|
-
|
|
64
|
-
- [ ]
|
|
65
|
-
|
|
66
|
-
- [ ]
|
|
56
|
+
- [ ] Trace every skill rating to a specific evidence source (stage + detail).
|
|
57
|
+
- [ ] Respect the evidence hierarchy. Interview evidence outranks CV.
|
|
58
|
+
- [ ] Ground the level recommendation in standard progression criteria.
|
|
59
|
+
- [ ] Cite interview evidence for the track recommendation. A CV alone is not
|
|
60
|
+
enough.
|
|
61
|
+
- [ ] Apply the decision rules strictly. Verify the match % and the gap counts.
|
|
62
|
+
- [ ] Keep the risk assessment honest. Do not minimise a concern to justify a
|
|
63
|
+
hire.
|
|
64
|
+
- [ ] Write "Do not hire" with the same rigour as "Hire" (GDPR Article 15 lets
|
|
65
|
+
the candidate request access).
|
|
66
|
+
- [ ] Update the brief with `[Hiring Recommendation](./recommendation.md)` and
|
|
67
|
+
a final pipeline entry.
|
|
68
|
+
- [ ] Write a recommendation you could show to the candidate without
|
|
69
|
+
embarrassment.
|
|
67
70
|
|
|
68
71
|
</do_confirm_checklist>
|
|
69
72
|
|
|
@@ -86,9 +89,10 @@ bunx fit-pathway job {discipline} {level} --track={track} --skills
|
|
|
86
89
|
bunx fit-pathway progress {discipline} {level} --track={track}
|
|
87
90
|
```
|
|
88
91
|
|
|
89
|
-
For each skill in the target job,
|
|
90
|
-
[evidence hierarchy](references/rubric.md#evidence-hierarchy)
|
|
91
|
-
rating, best evidence source,
|
|
92
|
+
For each skill in the target job, use the
|
|
93
|
+
[evidence hierarchy](references/rubric.md#evidence-hierarchy) to pick the
|
|
94
|
+
highest-fidelity evidence. Record final rating, best evidence source,
|
|
95
|
+
trajectory, confidence.
|
|
92
96
|
|
|
93
97
|
### 3. Build the final behaviour profile
|
|
94
98
|
|
|
@@ -120,9 +124,8 @@ cat "Knowledge/Roles/{matching file}"
|
|
|
120
124
|
```
|
|
121
125
|
|
|
122
126
|
Check the `**Status:**` field. Capture remaining positions, hiring manager,
|
|
123
|
-
domain lead, goal alignment, other
|
|
124
|
-
|
|
125
|
-
in terms of strategic impact.
|
|
127
|
+
domain lead, goal alignment, other candidates on the same req, and channel
|
|
128
|
+
(hr / vendor). Frame the recommendation in terms of strategic impact.
|
|
126
129
|
|
|
127
130
|
### 6. Assess against the active pipeline
|
|
128
131
|
|
|
@@ -146,8 +149,8 @@ Apply the [decision rules](references/rubric.md#decision-rules) and run the
|
|
|
146
149
|
|
|
147
150
|
### 8. Write the recommendation
|
|
148
151
|
|
|
149
|
-
|
|
150
|
-
|
|
152
|
+
Use the template in [references/template.md](references/template.md). Save to
|
|
153
|
+
`Knowledge/Candidates/{Name}/recommendation.md`. Carry the **advisory-only**
|
|
151
154
|
banner. Cite specific evidence in skill, behaviour, level, and track sections.
|
|
152
155
|
|
|
153
156
|
### 9. Update brief and insights
|
|
@@ -158,8 +161,8 @@ Update `brief.md`:
|
|
|
158
161
|
- Append `- [Hiring Recommendation](./recommendation.md)`.
|
|
159
162
|
- Add the final pipeline entry with date and outcome.
|
|
160
163
|
|
|
161
|
-
Update `Knowledge/Candidates/Insights.md` only when
|
|
162
|
-
observation
|
|
163
|
-
level-adjustment implications).
|
|
164
|
+
Update `Knowledge/Candidates/Insights.md` only when a cross-candidate
|
|
165
|
+
observation deserves a record (strongest at level, a pattern in the sourcing
|
|
166
|
+
channel, level-adjustment implications).
|
|
164
167
|
|
|
165
|
-
Use targeted Edit operations
|
|
168
|
+
Use targeted Edit operations. Never rewrite entire files.
|
|
@@ -13,8 +13,9 @@ applies and use it as the source of the final rating.
|
|
|
13
13
|
answers.
|
|
14
14
|
3. **Interviewer observation** — an interviewer noted strength or concern.
|
|
15
15
|
4. **CV evidence with quantification** — concrete metrics, named projects.
|
|
16
|
-
5. **CV evidence without quantification** —
|
|
17
|
-
|
|
16
|
+
5. **CV evidence without quantification** — the CV describes it but stays
|
|
17
|
+
vague.
|
|
18
|
+
6. **Not evidenced** — no stage surfaced it.
|
|
18
19
|
|
|
19
20
|
For each skill record: **final rating**, **best evidence source**,
|
|
20
21
|
**trajectory** (↑ / ↓ / —), **confidence** (High = demonstrated live; Medium =
|
|
@@ -22,9 +23,9 @@ discussed well; Low = CV only or thin).
|
|
|
22
23
|
|
|
23
24
|
## Behaviour evidence
|
|
24
25
|
|
|
25
|
-
Same hierarchy.
|
|
26
|
-
|
|
27
|
-
pattern), **consistency** (once vs. throughout).
|
|
26
|
+
Same hierarchy. A behaviour that an interview assessed carries far more weight
|
|
27
|
+
than a CV signal. For each: **final maturity**, **best evidence** (specific
|
|
28
|
+
moment or pattern), **consistency** (once vs. throughout).
|
|
28
29
|
|
|
29
30
|
## Level confirmation criteria
|
|
30
31
|
|
|
@@ -41,7 +42,7 @@ pattern), **consistency** (once vs. throughout).
|
|
|
41
42
|
| Recommendation | Criteria |
|
|
42
43
|
| -------------------------- | ----------------------------------------------------------------------------------------- |
|
|
43
44
|
| **Hire** | ≥ 70 % Strong match at the final level, no unresolved core-skill gaps, strong behaviours |
|
|
44
|
-
| **Hire at adjusted level** | Strong candidate
|
|
45
|
+
| **Hire at adjusted level** | Strong candidate. The evidence supports a level other than the original target |
|
|
45
46
|
| **Do not hire** | Unresolved core-skill gaps, behaviour concerns, or insufficient evidence after interviews |
|
|
46
47
|
|
|
47
48
|
### Hire criteria check
|
|
@@ -50,14 +51,14 @@ pattern), **consistency** (once vs. throughout).
|
|
|
50
51
|
- No core skill gaps remain unresolved (core = top-tier skills for the
|
|
51
52
|
discipline/track combo).
|
|
52
53
|
- All agent-aligned standard behaviours at or above expected maturity.
|
|
53
|
-
-
|
|
54
|
-
-
|
|
54
|
+
- Interview evidence confirms the level. The CV alone does not.
|
|
55
|
+
- Interview evidence confirms the track fit.
|
|
55
56
|
- No red flags from any interview stage.
|
|
56
57
|
|
|
57
58
|
## Pipeline context (Step 5)
|
|
58
59
|
|
|
59
|
-
This is **not** a ranking exercise
|
|
60
|
+
This is **not** a ranking exercise. It gives context. Note:
|
|
60
61
|
|
|
61
62
|
- Whether this candidate fills a gap in the current pipeline.
|
|
62
63
|
- Whether stronger candidates exist for the same role.
|
|
63
|
-
- Whether
|
|
64
|
+
- Whether a different open position suits this candidate better.
|
|
@@ -4,17 +4,18 @@ description: >
|
|
|
4
4
|
Process GDPR Article 17 data erasure requests. Finds and removes all personal
|
|
5
5
|
data related to a named individual from the knowledge base, cached data, and
|
|
6
6
|
agent state files. Use when the user receives a right-to-be-forgotten
|
|
7
|
-
request, asks to delete all data about a person, or
|
|
7
|
+
request, asks to delete all data about a person, or must comply with a
|
|
8
8
|
data erasure obligation.
|
|
9
9
|
compatibility: Requires macOS filesystem access
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Right to Be Forgotten
|
|
13
13
|
|
|
14
|
-
Process data erasure requests under GDPR Article 17.
|
|
15
|
-
|
|
16
|
-
synced data, and agent state files. Produces an **erasure
|
|
17
|
-
what
|
|
14
|
+
Process data erasure requests under GDPR Article 17. Work from the person's
|
|
15
|
+
name. Systematically find and remove all personal data from the knowledge base,
|
|
16
|
+
the cached synced data, and the agent state files. Produces an **erasure
|
|
17
|
+
report** that records what you found, deleted, and redacted. The report is the
|
|
18
|
+
compliance audit trail.
|
|
18
19
|
|
|
19
20
|
## Trigger
|
|
20
21
|
|
|
@@ -43,16 +44,16 @@ what was found, deleted, and redacted — the compliance audit trail.
|
|
|
43
44
|
<do_confirm_checklist goal="Verify erasure is complete and the audit trail is
|
|
44
45
|
sound">
|
|
45
46
|
|
|
46
|
-
- [ ]
|
|
47
|
-
- [ ]
|
|
48
|
-
|
|
49
|
-
- [ ]
|
|
50
|
-
- [ ]
|
|
51
|
-
- [ ]
|
|
52
|
-
- [ ]
|
|
53
|
-
- [ ]
|
|
54
|
-
actions taken.
|
|
55
|
-
- [ ]
|
|
47
|
+
- [ ] Get the user's confirmation before any deletion.
|
|
48
|
+
- [ ] Run every discovery recipe. Cover knowledge, cache, state, and drafts in
|
|
49
|
+
the inventory.
|
|
50
|
+
- [ ] Delete all dedicated files and directories.
|
|
51
|
+
- [ ] Redact all mentions and backlinks from other notes.
|
|
52
|
+
- [ ] Handle cached email threads, attachments, and calendar entries.
|
|
53
|
+
- [ ] Clean the agent state and `graph_processed`.
|
|
54
|
+
- [ ] Save the erasure report. Keep **no** personal data in it beyond the name
|
|
55
|
+
and the actions taken.
|
|
56
|
+
- [ ] Run a final `rg` search. Confirm the erasure report is the only match.
|
|
56
57
|
|
|
57
58
|
</do_confirm_checklist>
|
|
58
59
|
|
|
@@ -70,9 +71,9 @@ State to the user:
|
|
|
70
71
|
> - Cached email threads and attachments
|
|
71
72
|
> - Agent state and triage files
|
|
72
73
|
>
|
|
73
|
-
>
|
|
74
|
+
> You cannot undo this action. Proceed?
|
|
74
75
|
|
|
75
|
-
**Wait for explicit confirmation before
|
|
76
|
+
**Wait for explicit confirmation before you continue.**
|
|
76
77
|
|
|
77
78
|
### 1. Discovery
|
|
78
79
|
|
|
@@ -97,12 +98,12 @@ rm -f "Knowledge/People/{Name}.md"
|
|
|
97
98
|
find ~/.cache/fit/outpost/apple_mail/attachments/ -iname "*{Name}*" -delete
|
|
98
99
|
```
|
|
99
100
|
|
|
100
|
-
**3b. Redact mentions in other notes:**
|
|
101
|
+
**3b. Redact mentions in other notes:** Read each file. Remove the specific
|
|
101
102
|
lines/bullets/sections per the rules in
|
|
102
|
-
[references/classify.md](references/classify.md#redaction-rules)
|
|
103
|
-
`[[backlinks]]` to deleted notes
|
|
103
|
+
[references/classify.md](references/classify.md#redaction-rules). Remove broken
|
|
104
|
+
`[[backlinks]]` to deleted notes. Write the file back.
|
|
104
105
|
|
|
105
|
-
**3c. Email threads:**
|
|
106
|
+
**3c. Email threads:** Delete sole-subject threads. Redact paragraphs only in
|
|
106
107
|
multi-person threads.
|
|
107
108
|
|
|
108
109
|
**3d. Agent state files:**
|
|
@@ -126,9 +127,10 @@ rg -v "{deleted_path}" ~/.cache/fit/outpost/state/graph_processed \
|
|
|
126
127
|
|
|
127
128
|
### 4. Write the erasure report
|
|
128
129
|
|
|
129
|
-
|
|
130
|
-
[references/report-template.md](references/report-template.md).
|
|
131
|
-
|
|
130
|
+
Use the template in
|
|
131
|
+
[references/report-template.md](references/report-template.md). Save to
|
|
132
|
+
`Knowledge/Erasure/{Name}--{YYYY-MM-DD}.md`. Record **only** what you deleted.
|
|
133
|
+
Never record CV content, skills, or assessments.
|
|
132
134
|
|
|
133
135
|
### 5. Verify
|
|
134
136
|
|
|
@@ -148,7 +150,7 @@ them and update the report.
|
|
|
148
150
|
- Recruitment threads (known agency domains)
|
|
149
151
|
- `recruiter_triage.md`
|
|
150
152
|
|
|
151
|
-
|
|
152
|
-
be a colleague or non-recruitment contact.
|
|
153
|
+
It leaves `Knowledge/People/{Name}.md` and the wider graph intact. The person
|
|
154
|
+
may be a colleague or a non-recruitment contact.
|
|
153
155
|
|
|
154
156
|
**`all`** (default): full erasure across knowledge base, cache, and state.
|
|
@@ -3,21 +3,21 @@
|
|
|
3
3
|
Reference for `req-forget` Step 2. For every match in the inventory, pick the
|
|
4
4
|
action below.
|
|
5
5
|
|
|
6
|
-
| Reference Type | Action
|
|
7
|
-
| ---------------------------------- |
|
|
8
|
-
| **Dedicated note** (sole subject) | Delete entire file
|
|
9
|
-
| **Dedicated directory** | Delete entire directory
|
|
10
|
-
| **Mention in another note** | Redact: remove lines
|
|
11
|
-
| **Email thread** (sole subject) | Delete file
|
|
12
|
-
| **Email thread** (multiple people) | Redact: remove paragraphs about the person
|
|
13
|
-
| **Attachment** (their CV, etc.) | Delete file
|
|
14
|
-
| **Triage/state file** | Redact: remove lines
|
|
15
|
-
| **Insights file** | Redact: remove bullets
|
|
6
|
+
| Reference Type | Action | Example |
|
|
7
|
+
| ---------------------------------- | ---------------------------------------------- | ----------------------------------------------- |
|
|
8
|
+
| **Dedicated note** (sole subject) | Delete the entire file | `Knowledge/People/{Name}.md` |
|
|
9
|
+
| **Dedicated directory** | Delete the entire directory | `Knowledge/Candidates/{Name}/` |
|
|
10
|
+
| **Mention in another note** | Redact: remove the lines that name the person | Backlink in `Knowledge/Organizations/Agency.md` |
|
|
11
|
+
| **Email thread** (sole subject) | Delete the file | `~/.cache/fit/outpost/apple_mail/thread.md` |
|
|
12
|
+
| **Email thread** (multiple people) | Redact: remove the paragraphs about the person | A thread about multiple candidates |
|
|
13
|
+
| **Attachment** (their CV, etc.) | Delete the file | `attachments/{thread}/CV.pdf` |
|
|
14
|
+
| **Triage/state file** | Redact: remove the lines that mention them | `recruiter_triage.md` |
|
|
15
|
+
| **Insights file** | Redact: remove the bullets that mention them | `Knowledge/Candidates/Insights.md` |
|
|
16
16
|
|
|
17
17
|
## Redaction rules
|
|
18
18
|
|
|
19
19
|
- Remove entire bullet points that mention the person by name.
|
|
20
|
-
- Remove table rows
|
|
21
|
-
- Remove `## Connected to` entries
|
|
20
|
+
- Remove the table rows that contain the person's name.
|
|
21
|
+
- Remove the `## Connected to` entries that link to deleted notes.
|
|
22
22
|
- If a section becomes empty after redaction, remove its header too.
|
|
23
|
-
- Do **not** remove
|
|
23
|
+
- Do **not** remove nearby context that does not identify the person.
|
|
@@ -5,7 +5,7 @@ Audit trail for `req-forget` Step 4. Save to
|
|
|
5
5
|
|
|
6
6
|
**The report itself must not contain personal data** beyond the subject's name
|
|
7
7
|
and the actions taken. Do not copy CV content, skills, or assessments into the
|
|
8
|
-
report
|
|
8
|
+
report. Record only what you deleted. Do not record what it contained.
|
|
9
9
|
|
|
10
10
|
````markdown
|
|
11
11
|
# Data Erasure Report — {Full Name}
|