PROFILE BUILD BLOCKED
subject: Dario Velten   mode: self
source: build_v1.json   sha1 c7a93982431fa3b55710098cba45bb9ef6c003c2
build.py sha1 d77221a8a47433ffcb6464bd262cdbc08118d89d
phrases: phrases.json   sha1 8beb32ae53aa0f326530708ee03f6d2d1ed31074
gate scripts: check_* gates source tree, upwork-field-limits/scripts

SUMMARY
   1  PASS       check_phrases                                        PHRASES OK.
   2  PASS       check_coverage                                       SELF-SCORE 7.1/10   (9.9 of 14 sections covered; a declared gap scores as described under DECLARED)
   3  PASS       check_completeness                                   COMPLETE: every declared surface has every field it actually has.
   4  PASS       check_limits                                         120 fields checked, 0 violation(s)
   5  PASS       assets (make_images --check)                         ASSETS OK: no placeholder and no stale generated image in the paste set.
   6  FAIL       check_questions                                      BUILD BLOCKED: an unconfirmed claim is not tied to a question or not held off every surface.
   7  FAIL       diff_baseline                                        BLOCKED: the subject would paste over their own live wording without being told what changed, or the baseli...
   8  FAIL       claim_scan                                           CLAIM GATE: FAIL, 4 finding(s), 0 in coaching text. Every finding blocks.
   9  FAIL       prose counts (check_completeness --prose)            BUILD BLOCKED: the deliverable says something about itself that its own source does not.
  10  PASS       structure (Q12 title lead and Q13 employment dates)  STRUCTURE: PASS
  11  PASS       Q11 ship gate (profile_utils)                        Q11 ship gate: PASS
  12  FAIL       Deliverable text (claim_scan rules)                  DELIVERABLE TEXT: FAIL

======== 6. check_questions  [FAIL] ========
check_questions: build_v1.json

8 questions, 4 blocking
  Q1   BLOCKING accessibility: Have you delivered accessibility work for a client?
  Q2   BLOCKING catalog-category: Which category path does the catalog picker show for Webflow work?
  Q3   BLOCKING consultations: Does your profile editor offer a Consultations section?
  Q4   BLOCKING education: What education do you want listed?
  Q5   open     rate: Keep $65 an hour for now?
  Q6   open     contract-to-hire: Are you open to contract to hire?
  Q7   open     migration-price: Will you sell a WordPress migration at a fixed price and date?
  Q8   open     agency-mention: Should the About mention the agency you co-founded?

18 held field(s):
  HELD field #4 'Skill held for a question' (profile/profile) [Q1 accessibility]
       holds: Web Accessibility  (checked on every other field)
       reason: No accessibility project is on record. If you confirm one, it takes the Website Optimization slot.
  HELD field #47 'Catalog 1 category' (catalog_listing/Catalog 1) [Q2 catalog-category]
       holds: Development & IT > Web Development  (checked on every other field)
       reason: Only the top level of this path is verified. Open the picker and record every dropdown level before you publish.
  HELD field #55 'Catalog 1 tier price' (catalog_listing/Catalog 1)
       price hold: not confirmed by the subject; no strings checked
       reason: a price, delivery time or revision count is yours to set; it stays held until the field carries "confirmed": true
  HELD field #56 'Catalog 1 delivery days' (catalog_listing/Catalog 1)
       price hold: not confirmed by the subject; no strings checked
       reason: a price, delivery time or revision count is yours to set; it stays held until the field carries "confirmed": true
  HELD field #57 'Catalog 1 revisions' (catalog_listing/Catalog 1)
       price hold: not confirmed by the subject; no strings checked
       reason: a price, delivery time or revision count is yours to set; it stays held until the field carries "confirmed": true
  HELD field #68 'Catalog 2 category' (catalog_listing/Catalog 2) [Q2 catalog-category]
       holds: Development & IT > Web Development  (checked on every other field)
       reason: Only the top level of this path is verified. Open the picker and record every dropdown level before you publish.
  HELD field #76 'Catalog 2 tier price' (catalog_listing/Catalog 2)
       price hold: not confirmed by the subject; no strings checked
       reason: a price, delivery time or revision count is yours to set; it stays held until the field carries "confirmed": true
  HELD field #77 'Catalog 2 delivery days' (catalog_listing/Catalog 2)
       price hold: not confirmed by the subject; no strings checked
       reason: a price, delivery time or revision count is yours to set; it stays held until the field carries "confirmed": true
  HELD field #78 'Catalog 2 revisions' (catalog_listing/Catalog 2)
       price hold: not confirmed by the subject; no strings checked
       reason: a price, delivery time or revision count is yours to set; it stays held until the field carries "confirmed": true
  HELD field #91 'Catalog 3 category' (catalog_listing/Catalog 3) [Q2 catalog-category]
       holds: Development & IT > Web Development  (checked on every other field)
       reason: Only the top level of this path is verified. Open the picker and record every dropdown level before you publish.
  HELD field #99 'Catalog 3 tier price' (catalog_listing/Catalog 3)
       price hold: not confirmed by the subject; no strings checked
       reason: a price, delivery time or revision count is yours to set; it stays held until the field carries "confirmed": true
  HELD field #100 'Catalog 3 delivery days' (catalog_listing/Catalog 3)
       price hold: not confirmed by the subject; no strings checked
       reason: a price, delivery time or revision count is yours to set; it stays held until the field carries "confirmed": true
  HELD field #101 'Catalog 3 revisions' (catalog_listing/Catalog 3)
       price hold: not confirmed by the subject; no strings checked
       reason: a price, delivery time or revision count is yours to set; it stays held until the field carries "confirmed": true
  HELD field #115 'Education school' (education_entry/Education 1) [Q4 education]
       holds: [CONFIRM] School name exactly as it appears on your certificate  (checked on every other field)
       reason: Nothing about your education is on record, and an invented entry is a false credential.
  HELD field #116 'Education degree' (education_entry/Education 1) [Q4 education]
       holds: [CONFIRM] Degree or course name  (checked on every other field)
       reason: Nothing about your education is on record, and an invented entry is a false credential.
  HELD field #117 'Consultation title' (consultation/Consultation 1) [Q3 consultations]
       instance hold from field #117: the whole consultation/Consultation 1 does not ship; no strings checked
       reason: The Consultations section may not exist on your account. Nothing here is used until you find it.
  HELD field #118 'Consultation description' (consultation/Consultation 1) [Q3 consultations]
       instance hold from field #117: the whole consultation/Consultation 1 does not ship; no strings checked
       reason: The Consultations section may not exist on your account. Nothing here is used until you find it.
  HELD field #119 'Consultation topics' (consultation/Consultation 1) [Q3 consultations]
       instance hold from field #117: the whole consultation/Consultation 1 does not ship; no strings checked
       reason: The Consultations section may not exist on your account. Nothing here is used until you find it.

RULE 5: held string leaks onto another field outside allow_on
  >>> held 'Web Accessibility' from field #4 'Skill held for a question' (profile/profile) leaks onto field #39 'Portfolio 4 skills and deliverables' (portfolio_item/Portfolio 4) as tag 'Web Accessibility'; add 'portfolio_item/Portfolio 4' to allow_on only if it is meant to ship there
RULE 8: non-blocking question touches a priced or dated surface
  >>> Q7 'migration-price' is blocks=false but affects catalog_listing/Catalog 2; a catalog_listing attaches price or date to the work, so it must block
  >>> field #85 'Catalog 2 FAQ question 2' (catalog_listing/Catalog 2) is on catalog_listing and tied to Q7 'migration-price', which is blocks=false; it must block
  >>> field #86 'Catalog 2 FAQ answer 2' (catalog_listing/Catalog 2) is on catalog_listing and tied to Q7 'migration-price', which is blocks=false; it must block

4 violation(s), rules fired: 5, 8
BUILD BLOCKED: an unconfirmed claim is not tied to a question or not held off every surface.

======== 7. diff_baseline  [FAIL] ========
diff_baseline: build_v1.json
  subject: Dario Velten   mode: self   new_profile: false
  live baseline: 20 field(s)   paste set: 119 field(s)   (1 unshipped_alternate not diffed)

1. DELETIONS FROM THE LIVE WORDING  (read first: an additive review cannot see what is gone)
   profile/profile/profile_title
       disclosed    "Web Design | Landing Pages"
       plus 1 edit(s) of 1 to 2 words (shown, not gated)
   profile/profile/overview
       disclosed    "Hi, I'm Dario, a web designer based in Porto. I build"
       disclosed    "move sites off WordPress. I have worked with SaaS teams, health platforms and outdoor brands. I also design logos and social media graphics when a project ne..."
       plus 5 edit(s) of 1 to 2 words (shown, not gated)
   profile/profile/skills_list
       removed items: Squarespace, Wix, Shopify, Graphic Design, Logo Design, Copywriting, Email Marketing, Social Media Marketing
   employment_entry/Atlas Studio/employment_desc
   >>> UNDISCLOSED  "Joined as an in-house designer and moved up to lead"
                    not listed: "Joined as an in-house designer and moved up to lead"
   portfolio_item/Portfolio 2/portfolio_title
       plus 2 edit(s) of 1 to 2 words (shown, not gated)
   portfolio_item/Portfolio 2/portfolio_desc
       disclosed    "the Palewell team for a smooth project."
       plus 4 edit(s) of 1 to 2 words (shown, not gated)
   portfolio_item/Portfolio 2/portfolio_skills
       removed items: Web Design, Landing Page

2. CHANGED WITH NO DISCLOSURE
   >>> employment_entry/Atlas Studio/employment_desc  (no disclosures entry names it)

3. BASELINE TRUNCATION SIGNATURES
   none

3b. LIVE ENTRIES WITH NO COUNTERPART BESIDE A NEW ENTRY OF THE SAME KIND
   none

3c. INSTANCES NOT CAPTURED WHOLE  (an uncaptured field would overwrite live wording unseen)
   none

3d. REAL TITLES CHANGED WITH NO title_verified  (a disclosure never licenses a new title)
   none

4. CHANGED, DISCLOSED TO THE SUBJECT
   profile/profile/profile_title  The title now leads with webflow development, the phrase buyers type, instead of a design label, and names the migrat...
   profile/profile/overview  The About now opens with your strongest verified result, names three clients with their outcomes, and explains the CM...
   profile/profile/skills_list  Skills outside Webflow site work are replaced by skills buyers search for when they hire for Webflow builds and migra...
   portfolio_item/Portfolio 2/portfolio_title  The title now leads with the result instead of the client name, because a result is what a buyer scans for.
   portfolio_item/Portfolio 2/portfolio_role  Your role now names the migration and the CMS work, which is what the case shows.
   portfolio_item/Portfolio 2/portfolio_desc  The description now leads with the result and names both services that produced it. The thank you line is gone.
   portfolio_item/Portfolio 2/portfolio_skills  The tags now name the migration and CMS skills this case used, instead of general design tags.
   portfolio_item/Portfolio 2/portfolio_image  The screenshot is replaced by a board that leads with the result, because a thumbnail only shows what is large.

5. NEW FIELDS  (no live counterpart: new exposure, nothing of theirs overwritten)
   profile/profile/skills_list  [held]
   employment_entry/Independent practice/employment_company
   employment_entry/Independent practice/employment_location
   employment_entry/Independent practice/employment_title
   employment_entry/Independent practice/employment_start
   employment_entry/Independent practice/employment_end
   employment_entry/Independent practice/employment_desc
   portfolio_item/Portfolio 1/portfolio_title
   portfolio_item/Portfolio 1/portfolio_role
   portfolio_item/Portfolio 1/portfolio_desc
   portfolio_item/Portfolio 1/portfolio_skills
   portfolio_item/Portfolio 1/portfolio_image
   portfolio_item/Portfolio 3/portfolio_title
   portfolio_item/Portfolio 3/portfolio_role
   portfolio_item/Portfolio 3/portfolio_desc
   portfolio_item/Portfolio 3/portfolio_skills
   portfolio_item/Portfolio 3/portfolio_image
   portfolio_item/Portfolio 4/portfolio_title
   portfolio_item/Portfolio 4/portfolio_role
   portfolio_item/Portfolio 4/portfolio_desc
   portfolio_item/Portfolio 4/portfolio_skills
   portfolio_item/Portfolio 4/portfolio_image
   portfolio_item/Portfolio 5/portfolio_title
   portfolio_item/Portfolio 5/portfolio_role
   portfolio_item/Portfolio 5/portfolio_desc
   portfolio_item/Portfolio 5/portfolio_skills
   portfolio_item/Portfolio 5/portfolio_image
   catalog_listing/Catalog 1/catalog_title
   catalog_listing/Catalog 1/catalog_category  [held]
   catalog_listing/Catalog 1/catalog_team
   catalog_listing/Catalog 1/catalog_industry
   catalog_listing/Catalog 1/catalog_language
   catalog_listing/Catalog 1/catalog_tags
   catalog_listing/Catalog 1/catalog_desc
   catalog_listing/Catalog 1/catalog_tier_title
   catalog_listing/Catalog 1/catalog_tier_desc
   catalog_listing/Catalog 1/catalog_tier_price
   catalog_listing/Catalog 1/catalog_delivery_days
   catalog_listing/Catalog 1/catalog_revisions
   catalog_listing/Catalog 1/catalog_step_title
   catalog_listing/Catalog 1/catalog_step_desc
   catalog_listing/Catalog 1/catalog_step_title
   catalog_listing/Catalog 1/catalog_step_desc
   catalog_listing/Catalog 1/catalog_faq_question
   catalog_listing/Catalog 1/catalog_faq_answer
   catalog_listing/Catalog 1/catalog_requirement
   catalog_listing/Catalog 1/catalog_requirement
   catalog_listing/Catalog 1/catalog_image
   catalog_listing/Catalog 2/catalog_title
   catalog_listing/Catalog 2/catalog_category  [held]
   catalog_listing/Catalog 2/catalog_team
   catalog_listing/Catalog 2/catalog_industry
   catalog_listing/Catalog 2/catalog_language
   catalog_listing/Catalog 2/catalog_tags
   catalog_listing/Catalog 2/catalog_desc
   catalog_listing/Catalog 2/catalog_tier_title
   catalog_listing/Catalog 2/catalog_tier_desc
   catalog_listing/Catalog 2/catalog_tier_price
   catalog_listing/Catalog 2/catalog_delivery_days
   catalog_listing/Catalog 2/catalog_revisions
   catalog_listing/Catalog 2/catalog_step_title
   catalog_listing/Catalog 2/catalog_step_desc
   catalog_listing/Catalog 2/catalog_step_title
   catalog_listing/Catalog 2/catalog_step_desc
   catalog_listing/Catalog 2/catalog_faq_question
   catalog_listing/Catalog 2/catalog_faq_answer
   catalog_listing/Catalog 2/catalog_faq_question
   catalog_listing/Catalog 2/catalog_faq_answer
   catalog_listing/Catalog 2/catalog_requirement
   catalog_listing/Catalog 2/catalog_requirement
   catalog_listing/Catalog 2/catalog_image
   catalog_listing/Catalog 3/catalog_title
   catalog_listing/Catalog 3/catalog_category  [held]
   catalog_listing/Catalog 3/catalog_team
   catalog_listing/Catalog 3/catalog_industry
   catalog_listing/Catalog 3/catalog_language
   catalog_listing/Catalog 3/catalog_tags
   catalog_listing/Catalog 3/catalog_desc
   catalog_listing/Catalog 3/catalog_tier_title
   catalog_listing/Catalog 3/catalog_tier_desc
   catalog_listing/Catalog 3/catalog_tier_price
   catalog_listing/Catalog 3/catalog_delivery_days
   catalog_listing/Catalog 3/catalog_revisions
   catalog_listing/Catalog 3/catalog_step_title
   catalog_listing/Catalog 3/catalog_step_desc
   catalog_listing/Catalog 3/catalog_step_title
   catalog_listing/Catalog 3/catalog_step_desc
   catalog_listing/Catalog 3/catalog_faq_question
   catalog_listing/Catalog 3/catalog_faq_answer
   catalog_listing/Catalog 3/catalog_requirement
   catalog_listing/Catalog 3/catalog_requirement
   catalog_listing/Catalog 3/catalog_image
   other_experience/CMS training/other_exp_title
   other_experience/CMS training/other_exp_desc
   education_entry/Education 1/education_school  [held]
   education_entry/Education 1/education_degree  [held]
   consultation/Consultation 1/consult_title  [held]
   consultation/Consultation 1/consult_desc
   consultation/Consultation 1/consult_custom_topics

5b. BLANK ON THE LIVE PROFILE, FILLED BY THIS BUILD  (nothing of theirs overwritten)
   none

6. CARRIED OVER UNCHANGED
   profile/profile/hourly_rate  (9 UTF-16 units)  already live, no new exposure
   profile/profile/availability  (21 UTF-16 units)  already live, no new exposure
   profile/profile/languages  (3 items)  already live, no new exposure
   settings/settings/categories  (2 items)  already live, no new exposure
   employment_entry/Atlas Studio/employment_company  (12 UTF-16 units)  already live, no new exposure
   employment_entry/Atlas Studio/employment_location  (16 UTF-16 units)  already live, no new exposure
   employment_entry/Atlas Studio/employment_title  (18 UTF-16 units)  already live, no new exposure
   employment_entry/Atlas Studio/employment_start  (7 UTF-16 units)  already live, no new exposure
   employment_entry/Atlas Studio/employment_end  (7 UTF-16 units)  already live, no new exposure
   certification/Webflow Certified Partner/certification_name  (25 UTF-16 units)  already live, no new exposure
   certification/Webflow Certified Partner/certification_issuer  (7 UTF-16 units)  already live, no new exposure

7. LIVE FIELDS NOT IN THE PASTE SET  (they stay as they are)
   none

  warn: fields: identity profile/profile/skills_list repeats; entries pair by order of appearance, so a reorder reads as a change
  warn: fields: identity catalog_listing/Catalog 1/catalog_step_title repeats; entries pair by order of appearance, so a reorder reads as a change
  warn: fields: identity catalog_listing/Catalog 1/catalog_step_desc repeats; entries pair by order of appearance, so a reorder reads as a change
  warn: fields: identity catalog_listing/Catalog 1/catalog_requirement repeats; entries pair by order of appearance, so a reorder reads as a change
  warn: fields: identity catalog_listing/Catalog 2/catalog_step_title repeats; entries pair by order of appearance, so a reorder reads as a change
  warn: fields: identity catalog_listing/Catalog 2/catalog_step_desc repeats; entries pair by order of appearance, so a reorder reads as a change
  warn: fields: identity catalog_listing/Catalog 2/catalog_faq_question repeats; entries pair by order of appearance, so a reorder reads as a change
  warn: fields: identity catalog_listing/Catalog 2/catalog_faq_answer repeats; entries pair by order of appearance, so a reorder reads as a change
  warn: fields: identity catalog_listing/Catalog 2/catalog_requirement repeats; entries pair by order of appearance, so a reorder reads as a change
  warn: fields: identity catalog_listing/Catalog 3/catalog_step_title repeats; entries pair by order of appearance, so a reorder reads as a change
  warn: fields: identity catalog_listing/Catalog 3/catalog_step_desc repeats; entries pair by order of appearance, so a reorder reads as a change
  warn: fields: identity catalog_listing/Catalog 3/catalog_requirement repeats; entries pair by order of appearance, so a reorder reads as a change
  warn: portfolio_item/Portfolio 2/portfolio_image: live value is text but the new value is path

  >>> UNDISCLOSED_CHANGE: employment_entry/Atlas Studio/employment_desc: differs from the live copy and no disclosures entry names it
  >>> UNDISCLOSED_DELETION: employment_entry/Atlas Studio/employment_desc: removed live wording is not listed in the disclosure's deleted array. Add each line below to "deleted" exactly as printed, one entry per line:
        "Joined as an in-house designer and moved up to lead"

2 baseline violation(s)
BLOCKED: the subject would paste over their own live wording without being told what changed, or the baseline is not verbatim.

======== 8. claim_scan  [FAIL] ========
claim_scan: build_v1.json
  [PASS] dash: 0
  [PASS] buzzword: 0
  [PASS] years: 0
  [FAIL] entity: 1
  [FAIL] scope: 2
  [FAIL] excluded_tag: 1
  [PASS] cap_claim: 0

  FAIL scope        fields[22] (portfolio_item/Portfolio 1) @242
       service 'CMS setup' is attached to result(s) r1, which did not produce it
       "...4.1 seconds to 1.3 seconds. The CMS setup was rebuilt at the same time, s..."
  FAIL excluded_tag fields[23] (portfolio_item/Portfolio 1).items[4] @0
       tag 'Shopify' is listed in exclusions as 'Shopify'
       "Shopify"
  FAIL scope        fields[27] (portfolio_item/Portfolio 2) @117
       result r2 was produced by 2 services and this copy names only 'WordPress to Webflow migration' in the sentences that state it (as 'WordPress to Webflow migration'; missing: CMS setup); a service named elsewhere in the field does not count. Name every service where the result is stated, even when you also list its deliverables, or set "scope_note": true
       "...rdPress and a rebrand date. The WordPress to Webflow migration took three weeks with zero brok..."
  FAIL entity       prose @460
       'is mine' claims sole ownership of Ribeira Collective, but brief.entities records: co-founded
       "...he About leaves the agency out. The agency is mine, but buyers on Upwork h..."

CLAIM GATE: FAIL, 4 finding(s), 0 in coaching text. Every finding blocks.

======== 9. prose counts (check_completeness --prose)  [FAIL] ========
PROSE COUNT GATE  build_v1.json
  prose: 515 UTF-16 units, 1 line(s)
  also scanned: 52 question, disclosure and exclusion text(s); the subject's quoted deleted spans are not scanned

  derived counts (held fields excluded except from 'held'):
    skills                 19   items in the non-held skills_list field
    categories              2   items in the non-held categories field
    tags                   16   distinct tags across non-held portfolio_skills fields
    held                    6   surface instances carrying at least one held field
    questions               8   entries in questions
    blocking                4   questions with blocks: true
    profile                 1   profile instances with a non-held field
    employment_entry        2   employment_entry instances with a non-held field
    portfolio_item          5   portfolio_item instances with a non-held field
    unshipped_alternate     1   unshipped_alternate instances with a non-held field
    catalog_listing         3   catalog_listing instances with a non-held field
    consultation            0   consultation instances with a non-held field
    education_entry         0   education_entry instances with a non-held field
    other_experience        1   other_experience instances with a non-held field
    certification           1   certification instances with a non-held field
    settings                1   settings instances with a non-held field
    agency                  0   agency instances with a non-held field

  count tokens: 6 checked, 6 resolved
  typed counts: 1 checked against the source, 0 skipped

  >>> line 1: '20 skills' says 20, but the source derives skills = 19. Write {{count:skills}} instead of a typed number. Context: 'This build fills all 20 skills, {{count:portfolio_item}} por...'

1 prose count violation(s)
BUILD BLOCKED: the deliverable says something about itself that its own source does not.

======== 12. Deliverable text (claim_scan rules)  [FAIL] ========
Scans the text profile.html renders that claim_scan.py does not read: every question, every disclosure's change note and every exclusion. The subject's own deleted wording is quoted verbatim and is not scanned.
  FAIL entity       questions[7].why (agency-mention) @47
       'is mine' claims sole ownership of Ribeira Collective, but brief.entities records: co-founded
       "...k hire you solo. On a call, say the agency is mine, so buyers know who the..."
DELIVERABLE TEXT: FAIL

BUILD BLOCKED by: check_questions, diff_baseline, claim_scan, prose counts (check_completeness --prose), Deliverable text (claim_scan rules)
Nothing was written to <tmp>/out.
