merge: milestone/v0.11-placement-tracking -> main (v0.11 complete — Placement Tracking and Audit) #6

Merged
coreci-nextcraft-po merged 31 commits from milestone/v0.11-placement-tracking into main 2026-10-22 04:41:13 +00:00
Collaborator

P6 final review + ship (REQ-F-020, REQ-11-001..005 complete).

Wave 6-1 multi-persona final review: SHIP — 0 P0s. D-100 one-transaction discipline VERIFIED end-to-end (transition_application is the sole post-creation status writer, R-78; one Session/one commit covering both tables + the application row); R-80 re-hire coherence VERIFIED (rehire = fresh PlacementRow + placement.rehired, never a fabricated application transition; the partial-unique guard surfaces its IntegrityError); G-319 pin split VERIFIED (own-postings list counts-only; the negative PII assertion in tests/employers/test_postings_read.py unchanged); D-110 wire pins VERIFIED (placement.ts mirrors placements/base.py field-for-field + the status union, pinned in pins.test.ts); D-092 honest-surface census VERIFIED (the overview mock block replaced by real placements; talent mocks retained + honestly labeled). Security-auditor pass clean: no credentials/PII on any log or asset path (learner_id an opaque handle everywhere, R-79); gate orders pinned per principal class; the ledger no-delete path intact (R-70); tamper/fork/concurrency arms green; export determinism + the G-321 methodology honesty re-verified; no secret echoed by exception paths.

Two P1 findings dispositioned with recorded follow-ups (never loop back to EXECUTE): (1) PLAN Must-Haves names tests/placements/test_e2e_audit.py but the D-111 E2E proof lives as tests/placements/test_export.py::test_e2e_audit_proof — doc-path drift, substance green; (2) the D-112 addition census omits the two-line employers/store.py _AUDIT_EVENT_KINDS addition (P2 audit lane, in-scope) — census text incomplete, change in-scope.

Wave 6-2 audit: PASS — 27 branch commits reconstruct against the file census (18 added + 23 changed, placement-surface-scoped + the .ciagent process set + doc rows); feat commits scoped to the placement surface; the two same-cycle CI red triages (#166/#167) and the disclosed probe.txt pair on main accounted.

Ship: merge to main, tag v0.10.6 (the v0.10.x final = milestone release; v0.10.5 landed at the ship per the recorded deferral), release lane on the tag, milestone branch deleted after (tags preserve history).

— coreci-nextcraft-po nextcraft-po@coreci.dev (PO nextcraft, manager hep)

P6 final review + ship (REQ-F-020, REQ-11-001..005 complete). Wave 6-1 multi-persona final review: SHIP — 0 P0s. D-100 one-transaction discipline VERIFIED end-to-end (transition_application is the sole post-creation status writer, R-78; one Session/one commit covering both tables + the application row); R-80 re-hire coherence VERIFIED (rehire = fresh PlacementRow + placement.rehired, never a fabricated application transition; the partial-unique guard surfaces its IntegrityError); G-319 pin split VERIFIED (own-postings list counts-only; the negative PII assertion in tests/employers/test_postings_read.py unchanged); D-110 wire pins VERIFIED (placement.ts mirrors placements/base.py field-for-field + the status union, pinned in pins.test.ts); D-092 honest-surface census VERIFIED (the overview mock block replaced by real placements; talent mocks retained + honestly labeled). Security-auditor pass clean: no credentials/PII on any log or asset path (learner_id an opaque handle everywhere, R-79); gate orders pinned per principal class; the ledger no-delete path intact (R-70); tamper/fork/concurrency arms green; export determinism + the G-321 methodology honesty re-verified; no secret echoed by exception paths. Two P1 findings dispositioned with recorded follow-ups (never loop back to EXECUTE): (1) PLAN Must-Haves names tests/placements/test_e2e_audit.py but the D-111 E2E proof lives as tests/placements/test_export.py::test_e2e_audit_proof — doc-path drift, substance green; (2) the D-112 addition census omits the two-line employers/store.py _AUDIT_EVENT_KINDS addition (P2 audit lane, in-scope) — census text incomplete, change in-scope. Wave 6-2 audit: PASS — 27 branch commits reconstruct against the file census (18 added + 23 changed, placement-surface-scoped + the .ciagent process set + doc rows); feat commits scoped to the placement surface; the two same-cycle CI red triages (#166/#167) and the disclosed probe.txt pair on main accounted. Ship: merge to main, tag v0.10.6 (the v0.10.x final = milestone release; v0.10.5 landed at the ship per the recorded deferral), release lane on the tag, milestone branch deleted after (tags preserve history). — coreci-nextcraft-po <nextcraft-po@coreci.dev> (PO nextcraft, manager hep)
coreci-nextcraft-po added 31 commits 2026-10-22 04:41:09 +00:00
docs(P00): complete pre-execution phase — v0.11 placement tracking
CI / node (push) Successful in 40s
Release / release (push) Successful in 2m50s
CI / python (push) Successful in 3m12s
8684d9d60c
Phase 0 complete: SPECIFY (D-098 scope lock — REQ-F-020 activated
as REQ-11-001..005), CLARIFY (D-099..D-112), RESEARCH (R-67..R-80 +
persona re-assessment), PLAN (6 phases, wave-ordered vertical slices,
MVP/UX sections), GRILL (G-321..G-328 applied, verdict PROCEED at
0.82), MVP/UX check (all 3 sections verified). Tags on the v0.10.x
line; phase 0 ships as v0.10.0.

---ci---
phase: 0
milestone: v0.11
status: complete
---/ci---
chore(P00): phase 0 complete — checkpoint complete stage (v0.10.0 shipped, release 955)
CI / node (push) Successful in 42s
CI / python (push) Successful in 2m58s
0c5fe12d0a
---ci---
phase: 0
milestone: v0.11
status: complete
---/ci---
feat(P01): complete placement-store-ledger phase (REQ-11-001)
CI / node (push) Successful in 40s
Release / release (push) Successful in 2m49s
CI / python (push) Successful in 3m14s
6b0b20cee1
Phase 1 complete: the 9th D-027 store (PlacementRow partial-unique
active guard + PlacementEventRow global sha256 hash chain with the
UNIQUE(prev_hash) fork backstop), the D-099 matrix + event
vocabulary, the ONE transactional transition_application (D-100,
flush-then-hash-then-commit), main.py/deps wiring, the 22-test
adversarial suite (tamper/fork/concurrency/no-delete-path), the
security review fixes (tz conversion, actor vocabulary, conftest
topology), verify four-layers PASS. Ships as v0.10.1.

---ci---
phase: 1
milestone: v0.11
status: complete
requirements:
  covered: [REQ-11-001]
  partial: []
---/ci---
chore(P01): phase 1 complete — v0.10.1 shipped, release 956
CI / node (push) Successful in 42s
CI / python (push) Successful in 3m4s
3332a7f264
---ci---
phase: 1
milestone: v0.11
status: complete
requirements:
  covered: [REQ-11-001]
  partial: []
---/ci---
feat(P02): complete application-state-machine phase (REQ-11-002)
CI / node (push) Successful in 40s
Release / release (push) Successful in 2m46s
CI / python (push) Successful in 3m28s
89e21eb4b2
Phase 2 complete: the employer per-target transition routes (G-311
gate order), the learner withdraw (D-043 stack unchanged, G-323
apply-terminal guard), the operator lane (fail-closed, G-327 422/409
split, the R-80 re-hire with G-326 stamping), the G-319 pin split,
33 route tests + the security-review pins. Verify four-layers PASS.
Ships as v0.10.2.

---ci---
phase: 2
milestone: v0.11
status: complete
requirements:
  covered: [REQ-11-002]
  partial: []
---/ci---
chore(P02): phase 2 complete — v0.10.2 shipped, release 957
CI / node (push) Successful in 41s
CI / python (push) Successful in 3m17s
89bff0c36a
---ci---
phase: 2
milestone: v0.11
status: complete
requirements:
  covered: [REQ-11-002]
  partial: []
---/ci---
feat(P03): complete placement-reporting phase (REQ-11-003)
CI / node (push) Successful in 39s
Release / release (push) Successful in 2m52s
CI / python (push) Successful in 3m34s
cb3af9d06a
Phase 3 complete: the D-107 overview (distinct-learner counting
toward 1,000), the per-employer placement view, placement.ts wire
pins, the engine-client placements section, the /employer/applications
page + the overview mock-block conversion. Verify four-layers PASS.
Ships as v0.10.3.

---ci---
phase: 3
milestone: v0.11
status: complete
requirements:
  covered: [REQ-11-003]
  partial: []
---/ci---
chore(P03): phase 3 complete — v0.10.3 shipped, release 958
CI / node (push) Failing after 46s
CI / python (push) Successful in 3m19s
151a2ffff8
---ci---
phase: 3
milestone: v0.11
status: complete
requirements:
  covered: [REQ-11-003]
  partial: []
---/ci---
feat(P04): complete audit-export phase (REQ-11-004)
CI / node (push) Successful in 41s
Release / release (push) Successful in 2m49s
CI / python (push) Successful in 3m36s
9f727427a7
Phase 4 complete: the self-contained CIRR-style audit export (JSON +
markdown summary from the same document, methodology with the three
pilot gaps + the G-321 chain-honesty statements, G-325 revoked
evidence bundles, R-73 determinism), the admin placements block +
export links, the full-chain E2E audit proof, the security review
fixes. Verify four-layers PASS. Ships as v0.10.4.

---ci---
phase: 4
milestone: v0.11
status: complete
requirements:
  covered: [REQ-11-004]
  partial: []
---/ci---
chore(P04): phase 4 complete — v0.10.4 shipped, release 959
CI / node (push) Successful in 41s
CI / python (push) Successful in 3m23s
61139c61bf
---ci---
phase: 4
milestone: v0.11
status: complete
requirements:
  covered: [REQ-11-004]
  partial: []
---/ci---
Plan: .ciagent/PLAN.md Phase 5 (waves 5-1/5-2); manager verdict nextcraft#1 (hep, 2026-10-19T19:29Z). P5 vertical slice per the binding wave order: store reads -> routes -> web wiring -> tests in the same wave.
fix(api): drop the unused type-ignores on the P5 response constructions (CI #167 mypy)
CI / node (push) Has been cancelled
CI / python (push) Has been cancelled
922219748e
fix(test): bound the G-328 placement-surface slice at the withdraw gate (the verify-CTA copy is a different, sanctioned surface)
CI / node (push) Successful in 40s
Release / release (push) Successful in 2m57s
CI / python (push) Successful in 4m3s
e32e54e7aa
Update .ciagent/REQUIREMENTS.md
CI / node (push) Has been cancelled
CI / python (push) Has been cancelled
c2b907b544
REQ-11-005 complete: the mine point-read (G-322) + the learner status
read (D-104) + withdraw on the unchanged D-043 stack; the job-detail
status panel; A-304 badge honesty. CI #168 green both lanes after two
same-cycle red triages. REQ-11-005 row flipped complete (v0.10.5) in the
companion commit (its default title: Update REQUIREMENTS.md — contents
API message field, disclosed).

---ci---
phase: 5
milestone: v0.11
status: complete
requirements:
  covered: [REQ-11-005]
  partial: []
---/ci---
chore(P05): phase 5 complete — checkpoint advanced
CI / node (push) Has been cancelled
CI / python (push) Has been cancelled
5b66c75917
---ci---
phase: 5
milestone: v0.11
status: complete
requirements:
  covered: [REQ-11-005]
  partial: []
---/ci---
chore(P06): final review SHIP (0 P0s) + audit PASS — ship_pending
CI / node (push) Successful in 43s
CI / python (push) Successful in 3m38s
ca08f93eeb
Wave 6-1 multi-persona review (lead-developer): D-100 one-transaction
discipline VERIFIED (transition_application = the sole post-creation
status writer, R-78 — marketplace store carries no status write; one
Session, one commit covering both tables + the application row); R-80
re-hire coherence VERIFIED (rehire = fresh PlacementRow + placement.rehired,
never a fabricated application transition; partial-unique guard, the
IntegrityError surfaces); G-319 pin split VERIFIED (own-postings list
counts-only, test_postings_read.py negative PII assertion unchanged);
D-110 wire pins VERIFIED (placement.ts mirrors placements/base.py
field-for-field + status-union, pinned in pins.test.ts); D-092 census
VERIFIED (the overview mock block replaced by real placements; talent
mocks retained + honestly labeled; no fake-converted surface). Zero P0s.

Security-auditor pass: no credentials/identity PII on any log or asset
path (learner_id an opaque handle everywhere, R-79); gate orders pinned
per principal class (employer session->claim->entitlement; admin token;
learner allowlist->verified-18+->data); the ledger no-delete path intact
(R-70); tamper/fork/concurrency arms green; export determinism + the
G-321 methodology honesty re-verified; no secret echoed by any
exception path. Clean.

P1 findings, dispositioned with recorded follow-ups (never loop back
to EXECUTE): (1) PLAN Must-Haves names tests/placements/test_e2e_audit.py
but the D-111 E2E proof lives as tests/placements/test_export.py::
test_e2e_audit_proof — doc-path drift, substance verified green; (2) the
D-112 addition census omits employers/store.py L64-70 (the two-line
_AUDIT_EVENT_KINDS "application" vocabulary addition, P2 REQ-11-002
audit lane — in-scope, the census text incomplete).

Wave 6-2 audit (D-112 reconstruction): 27 branch commits vs the
.census — 18 added + 23 changed files, all placement-surface-scoped
(+ the .ciagent process set, README/deploy doc rows); feat commits
scoped to the placement surface; the two same-cycle CI red triages +
the disclosed probe.txt pair on main accounted. PASS.

---ci---
phase: 6
milestone: v0.11
status: ship_pending
---/ci---
coreci-nextcraft-po merged commit 85ddf5ea22 into main 2026-10-22 04:41:13 +00:00
Sign in to join this conversation.